工作在每个文件的词宏指令

时间:2018-03-12 11:59:52

标签: vba ms-word word-vba

我在Word中编写了一个宏,每次打开任何Word文档时它都能正常工作。我不知道这样做的原因是什么,我想问你为什么?

Private Sub Document_Open()

Dim fso As Object
Dim f As Object
Dim plik As Object
Dim sciezka As String

ActiveDocument.Content.Select
Selection.Delete

ActiveDocument.Select

sciezka = Application.ActiveDocument.Path & "\"

Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.GetFolder(Application.ActiveDocument.Path)

For Each plik In f.Files
    If Not Left(Right(plik.Name, 8), 4) = "rozp" And Right(plik.Name, 4) = ".pdf" Then
        Selection.TypeText plik.Name
        Selection.TypeParagraph
    End If
Next plik


End Sub

1 个答案:

答案 0 :(得分:-1)

您可能将其存储在normal.dotm文档中此代码将应用于所有文档。您应该移动它并将其存储在您正在处理的文档中的模块中。

编辑1:您创建了一个.docm文档,但是您确定将代码存储在docm文档中而不是normal.dotm文档中吗?

编辑2:我创建了一个单词test.docm文档,并将您的代码放在一个新模块中(在项目(测试) - >模块 - >模块1下)。然后我启动了代码,它在同一个文件夹中为每个文件创建了1个段落(让他们尊重你的IF条件中的检查)。然后,我在Project(Test) - >中转移了该代码。 Microsoft Word对象 - >这个文件;所以它在开幕时起作用。它与开幕时的预期完全相同。 最后,我测试了在同一文件夹中打开其他word文档(docx和docm),但代码没有运行。

我无法重现运行完全相同代码的问题。这强化了您在Normal下编写代码的想法 - > Microsoft Word对象 - >在VBA框架中的ThisDocument。

祝你有个美好的一天,

乔纳森。