Excel VBA,使用 FileDialog 打开多个工作簿并引用它们

谢尔盖

我目前正在使用以下代码提示用户输入工作簿,打开它,从中获取一些信息,然后关闭它。目前,我通过使用工作簿集合和索引(“woorkbooks(2)”)来处理打开的工作簿。现在我需要打开两个工作簿,我的问题是我不知道哪些工作簿将被索引为 2,哪些将被索引为 3。所以,我认为必须有一种方法来获得对每个工作簿的引用工作簿。

Function openfile() As Boolean

Dim fd As FileDialog
Dim file_was_chosen As Boolean

Set fd = Application.FileDialog(msoFileDialogOpen)

With fd
    .Filters.Clear
    .Filters.Add "Excel File", "*.xl*"
End With

file_was_chosen = fd.Show

If Not file_was_chosen Then
    MsgBox "You didn't select a file"
    openfile = False
    Exit Function
End If

fd.Execute
openfile = True

End Function

现在我已经看到了一些解决这个问题的解决方案,包括获取每个工作簿的完整路径,但我更愿意避免使用完整路径,因为它包含不同语言的单词(工作簿的名称显示为问号)。此外,我更喜欢一种解决方案,其中用户只提示一次 2 个文件而不是两次。

温特奈尔

此版本为用户提供了一个对话框。享受。无论谁对我的其他答案投反对票,请在其中添加评论,解释您不喜欢它的原因,以至于需要投反对票。

Function openfile() As Variant
    Dim aOpen(2) As String, itm As Variant, cnt As Long, lAsk As Long
    Dim fd As FileDialog
    Dim file_was_chosen As Boolean

    Set fd = Application.FileDialog(msoFileDialogOpen)

    With fd
        .Filters.Clear
        .Filters.Add "Excel File", "*.xl*"
    End With

    Do
        file_was_chosen = fd.Show
        If Not file_was_chosen Or fd.SelectedItems.Count > 2 Then
            lAsk = MsgBox("You didn't select one or two files, try again?", vbQuestion + vbYesNo, "File count mismatch")
            If lAsk = vbNo Then
                openfile = aOpen
                Exit Function
            End If
        End If
    Loop While fd.SelectedItems.Count < 1 Or fd.SelectedItems.Count > 2

    cnt = 0
    For Each itm In fd.SelectedItems
        aOpen(cnt) = itm
        cnt = cnt + 1
    Next
    openfile = aOpen
    fd.Execute
End Function

Sub test()
    Dim vRslt As Variant
    Dim wkb As Excel.Workbook, wkb1 As Excel.Workbook, wkb2 As Excel.Workbook

    vRslt = openfile
    For Each wkb In Application.Workbooks
        If wkb.Path & "\" & wkb.Name = vRslt(0) Then Set wkb1 = wkb
        If wkb.Path & "\" & wkb.Name = vRslt(1) Then Set wkb2 = wkb
    Next

    If vRslt(0) = "" Then ' no files
        MsgBox "No files opened so nothing happens..."
    ElseIf vRslt(1) = "" Then ' one file was opened
        MsgBox "One file so do whatever you want for one file"
    Else ' two files were opened
        MsgBox "Two files so do whatever you want for two files"
    End If        
End Sub

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用FileDialog打开工作簿并在Excel VBA中进行操作

来自分类Dev

使用FileDialog打开工作簿并进行操作

来自分类Dev

使用 VBA 解析多个 Excel 工作簿

来自分类Dev

Excel 2013 VBA为单个工作簿打开多个窗口

来自分类Dev

Excel 2013 VBA为单个工作簿打开多个窗口

来自分类Dev

使用.filedialog将查询结果导出到新的Excel文件

来自分类Dev

Excel VBA可跨工作簿使用

来自分类Dev

使用通配符打开Excel工作簿

来自分类Dev

使用Python打开Excel工作簿

来自分类Dev

使用单元格引用循环(范围内)打开和打印 Excel 工作簿

来自分类Dev

使用Access 2010 VBA列出所有打开的Excel工作簿

来自分类Dev

使用VBA通过个人工作簿宏打开另一个Excel文件

来自分类Dev

使用Excel VBA在不同工作簿中的索引/匹配公式中引用文件路径变量

来自分类Dev

Excel VBA:打开新工作簿时ActiveWorkbook不会更改

来自分类Dev

在工作簿上打开Excel VBA自动运行宏

来自分类Dev

使用什么方法使FileDialog中的打开按钮起作用?

来自分类Dev

使用fileDialog2在Maya中打开文件

来自分类Dev

如何使用tkinter.filedialog askopenfiles打开多张图片

来自分类Dev

如何使用QML FileDialog选择多个文件和目录

来自分类Dev

如何使用VBA从变量Excel工作簿复制数据?

来自分类Dev

使用VBA将Excel工作簿导出为PDF

来自分类Dev

使用变量的Excel 2010 vba工作簿方法

来自分类Dev

如何使用vlookup vba访问封闭的Excel工作簿

来自分类Dev

使用excel vba在userform下隐藏工作簿

来自分类Dev

如何使用vba动态更新excel中的工作簿名称?

来自分类Dev

Excel VBA通过使用通用变量“设置”对其他工作簿的引用,将该引用保留在公式中

来自分类Dev

Excel VBA:将多个工作簿合并为一个工作簿

来自分类Dev

使用vbs打开excel工作簿,运行宏并保存工作簿

来自分类Dev

VBA使用Outlook打开Excel无法打开

Related 相关文章

  1. 1

    使用FileDialog打开工作簿并在Excel VBA中进行操作

  2. 2

    使用FileDialog打开工作簿并进行操作

  3. 3

    使用 VBA 解析多个 Excel 工作簿

  4. 4

    Excel 2013 VBA为单个工作簿打开多个窗口

  5. 5

    Excel 2013 VBA为单个工作簿打开多个窗口

  6. 6

    使用.filedialog将查询结果导出到新的Excel文件

  7. 7

    Excel VBA可跨工作簿使用

  8. 8

    使用通配符打开Excel工作簿

  9. 9

    使用Python打开Excel工作簿

  10. 10

    使用单元格引用循环(范围内)打开和打印 Excel 工作簿

  11. 11

    使用Access 2010 VBA列出所有打开的Excel工作簿

  12. 12

    使用VBA通过个人工作簿宏打开另一个Excel文件

  13. 13

    使用Excel VBA在不同工作簿中的索引/匹配公式中引用文件路径变量

  14. 14

    Excel VBA:打开新工作簿时ActiveWorkbook不会更改

  15. 15

    在工作簿上打开Excel VBA自动运行宏

  16. 16

    使用什么方法使FileDialog中的打开按钮起作用?

  17. 17

    使用fileDialog2在Maya中打开文件

  18. 18

    如何使用tkinter.filedialog askopenfiles打开多张图片

  19. 19

    如何使用QML FileDialog选择多个文件和目录

  20. 20

    如何使用VBA从变量Excel工作簿复制数据?

  21. 21

    使用VBA将Excel工作簿导出为PDF

  22. 22

    使用变量的Excel 2010 vba工作簿方法

  23. 23

    如何使用vlookup vba访问封闭的Excel工作簿

  24. 24

    使用excel vba在userform下隐藏工作簿

  25. 25

    如何使用vba动态更新excel中的工作簿名称?

  26. 26

    Excel VBA通过使用通用变量“设置”对其他工作簿的引用,将该引用保留在公式中

  27. 27

    Excel VBA:将多个工作簿合并为一个工作簿

  28. 28

    使用vbs打开excel工作簿,运行宏并保存工作簿

  29. 29

    VBA使用Outlook打开Excel无法打开

热门标签

归档