【问题标题】:Excel VBA - Append .xls to filename to open fileExcel VBA - 将 .xls 附加到文件名以打开文件
【发布时间】:2017-04-19 13:39:35
【问题描述】:

我有代码可以打开一个带有可变日期的文件,如下所示。如果不将 m.d.y.xls 输入到输入框中,此代码将不起作用。我只想在输入框中输入 m.d.y 。请看一下,让我知道我错过了什么。谢谢!

Dim wbkOpen As Workbook
Dim strFilePath As String
Dim strFileName As String
strFilePath = "D:\Users\stefan.bagnato\Desktop\Daily Performance Summary\Agent Group Daily Summary "
strFileName = InputBox("Enter last Friday's date in the format M.D.Y", "Friday's Date")
Set wbkOpen = Workbooks.Open(strFilePath & strFileName, False, True)

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    这是基本的字符串连接:

    strFilePath & strFileName & ".xls"
    

    您应该检查以确保文件存在,否则会出现错误:

    Dim fullFileName As String
    strFilePath & strFileName & ".xls"
    If Dir(fullFileName) = "" Then
        MsgBox "Invalid filename!"
        Exit Sub
    End If
    Set wbkOpen = Workbooks.Open(fullFileName, False, True)
    

    理想情况下,您可以完全避免用户输入(容易出错):

    Const strFilePath As String = "D:\Users\stefan.bagnato\Desktop\Daily Performance Summary\Agent Group Daily Summary "
    Dim wbkOpen As Workbook
    Dim LastFridayDate As String
    Dim fullFileName As String
    Dim fdlg as FileDialog
    LastFridayDate = Format(Date - (Weekday(Date, vbFriday) - 1), "m.d.yy")
    fullFileName = strFilePath & LastFridayDate & ".xls"
    
    If Dir(fullFileName) = "" Then
        If MsgBox("The file named " & fullFileName & " doesn't exist. Would you like to manually locate the file?", vbYesNo) = vbNo Then
            Exit Sub
        Else
            Set fdlg = Application.FileDialog(msoFileDialogOpen)
            '## Opens the fileDialog in the normal folder where these files should exist
            fdlg.InitialFileName = strFilePath
            '## Display the fileDialog to the user
            fdlg.Show
            '## Validate the fileDialog hasn't been canceled
            If fdlg.SelectedItems.Count <> 0 Then
                '## Return the value of the item selected by the user
                fullFileName = fdlg.SelectedItems(1)
            Else:
                MsgBox "No file selected, exiting procedure..."
            End If
        End If
    End If
    Set wbkOpen = Workbooks.Open(fullFileName, False, True)
    

    当然,允许用户手动选择文件最终可能需要额外的验证和/或错误处理(即,如果他们选择了错误的文件怎么办?程序如何知道哪个日期 正确的日期[我敢打赌它不能,如果不做一个丑陋的蛮力循环,仍然会做出很多可能并不总是成立的假设)如果他们选择 PDF 或 PPT 文件而不是 XLS 等,但这些点完全超出了这个问题的范围。)

    如果您有其他后续跟进,请遵循适当的网站礼仪并提出新问题 :)

    【讨论】:

    • 如果该文件正在使用中就可以了,但需要禁用 application.displayalerts 以避免只读对话。
    • 谢谢大卫!该文件应该始终存在,所以唯一的问题是我输入错误的日期。我怎样才能让它循环回输入框,而不是执行“退出子”?
    • 使用GoTo 语句或While 循环。
    • @sbagnato 查看应该避免用户输入需要的修订:D
    • 大卫,运气不好。我得到文件不存在。现在,实际文件名是“Agent Group Daily Summary 4.13.17”。然而,由于上周放假,没有星期五。因此,我编辑了上面的代码,使 vbFriday 为 vbThursday,但我仍然收到 DNE 错误。想法?
    猜你喜欢
    • 2012-05-17
    • 1970-01-01
    • 1970-01-01
    • 2021-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-26
    相关资源
    最近更新 更多