excel 我如何按下'打开'按钮自动在对话框中,

pkln4tw6  于 11个月前  发布在  其他
关注(0)|答案(2)|浏览(112)

我是一个初学者,当我使用Application.FilaDialog(msoFileDialogOpen)时,我可以通过编程选择特定的文件,但无法点击打开按钮。我使用Sendkeys“{ENTER}”,但它不起作用。
希望你们帮我自动按下按钮
下面是我的代码:

Sub OpenButton()
With Application.FileDialog(msoFileDialogOpen)
        .InitialFileName = "my_path"
        .Filters.Clear
        .Filters.Add "Eval-txt", "*.csv"
        .AllowMultiSelect = False
        If .Show <> 0 Then
          Application.ScreenUpdating = False
          .Execute
          Application.SendKeys "{ENTER}"
        End If
End Sub

字符串

ar7v8xwq

ar7v8xwq1#

FileDialog是人机界面的功能,专门用于与人进行交互。如果您不需要来自人的任何信息,则无需使用此功能。
什么将是所需的“按下'打开'按钮自动”的行动的结果?你会得到一个文件名.考虑到“编程选择一个特定的文件”,你可以得到这个结果只是分配特定的文件名到一个变量没有FileDialog .
因此,代码:

Sub OpenButton()
    Dim sFn As String
    sFn = "my_path\afilename.csv" ' afilename - that you "programmatically select a specific file"
End Sub

字符串
一般来说,你需要陈述和回答的第一个问题是“是否需要人际互动?"。如果是,你需要确定互动的类型:
1.获取一些信息。它可以只是确认您以编程方式选择特定文件:

Dim answer As VbMsgBoxResult
  answer = MsgBox("Pls. confirm the filename " & sFn, vbOKCancel, "File selection")
  If answer = vbOK Then
    ...


1.提供人工信息。您可以使用状态栏执行此操作:

Application.StatusBar = sFn

aydmsdu9

aydmsdu92#

FileDialog将返回用户选择的文件的路径,而不返回其他任何内容。
要打开文件,必须使用Workbooks.Open,例如:

Sub OpenButton()

    Dim wrkBk As Workbook

    With Application.FileDialog(msoFileDialogOpen)
            .InitialFileName = "my_path"
            .Filters.Clear
            .Filters.Add "Eval-txt", "*.csv"
            .AllowMultiSelect = False
            If .Show <> 0 Then
                'After the user has hit enter the workbook will open.
                Set wrkBk = Workbooks.Open(.SelectedItems(1))
                
                'And display a message showing what's in cell A1 of the first sheet.
                MsgBox wrkBk.Worksheets(1).Range("A1")
            End If
    End With
End Sub

字符串
如果每次都是同一个文件,你可以告诉代码打开它,而不需要用户的任何交互:

Sub Test()

    Dim wrkBk As Workbook
    Set wrkBk = Workbooks.Open("C:\Users\dbartrup-cook\Documents\SomeFile.csv")
    
    MsgBox wrkBk.Worksheets(1).Range("A1")

End Sub


或者,如果文件名可以计算,您可以使用:

Sub Test()

    Dim wrkBk As Workbook
    Set wrkBk = Workbooks.Open("C:\Users\dbartrup-cook\Documents\" & Format(Date, "dd-mmm-yy") & ".csv")
    
    MsgBox wrkBk.Worksheets(1).Range("A1")

End Sub


最后一个示例的文件名今天为 C:\Users\dbartrup-cook\Documents\01-Nov-23.csv,明天为 02-Nov-23.csv

相关问题