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

问题描述 投票:0回答:1

我在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
vba ms-word word-vba
1个回答
-1
投票

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

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

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

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

祝你有美好的一天,

乔纳森。

© www.soinside.com 2019 - 2024. All rights reserved.