通过' For Each'打开多个文档结构体。 VBA

时间:2016-11-02 14:53:38

标签: vba word-vba

我想要一段代码,允许我打开放在文件夹中的3个文档 - 每次打开文档时我都希望有一个显示文件名的消息框。我想通过For Each Next结构来完成这个循环。

我知道application.documents.open filename:="链接到文件"是我需要使用的代码,但我无法将它组合在一起。

Option Explicit

Sub openthrice()

    Application.Documents.Open FileName:="C:\Users\John\Desktop\New folder\Doc1.docx"
End Sub

2 个答案:

答案 0 :(得分:0)

尝试将其作为10的入门者,它将打开文件并在消息框中显示文件路径,并将进一步简化回复...

Dim StrFile As String

StrFile = Application.GetOpenFilename
Workbooks.Open (StrFile), UpdateLinks:=False
MsgBox StrFile

答案 1 :(得分:0)

此方法需要引用 Windows脚本宿主对象模型。要从VBA菜单中添加选择工具,然后选择参考。引用按字母顺序列出。

' Requires reference: Windows Script Host Object Model.
Sub FindFile()
    Const ROOT_DIR As String = "C:\MI\Example"  ' Update with your folder.
    Dim fso As FileSystemObject                 ' Used to read from file system.
    Dim fle As File                             ' Used to loop over files.

    ' Ready object variable for use.
    Set fso = New FileSystemObject

    ' Loop over files.
    For Each fle In fso.GetFolder(ROOT_DIR).Files

        If fle.Name Like "*.docx" Then Application.Documents.Open fle.Name
    Next


    ' Release object vars before they leave scope.
    Set fso = Nothing
End Sub

FileSystemObject是一个功能强大的类,由Microsoft提供。它允许您的代码与Windows文件系统进行交互。

修改

错误用户定义的类型未定义表示编译器无法识别您的数据类型。在这种情况下,它不知道FileSystemObject是什么,因此无法创建该类型的变量fso。要修复它需要上面提到的参考。这包含定义,告诉VBA fso是什么,以及它是如何工作的。

从菜单条中,您可以点击工具>>选中引用并仔细检查 Windows脚本宿主对象模型(选定的引用应位于顶部,其余引用按字母顺序列出)。

References Dialog