在 Word Doc 上调用方法错误:Excel VBA 引发运行时错误 438:对象不支持此属性或方法

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

我已经为一个更大的项目编写这个测试代码几天了,并且不断遇到这些 438 错误。我在这里收到了第一个帮助:438 Error,但现在情况越来越严重,我在 WordDoc 上的所有方法上都收到了错误。这个想法只是根据电子表格中的值对模板文档中的占位符进行查找/替换(复制以避免冲突)。据我发现,word 文档有 .Content.Find.etc 方法,但我无法让它运行来完成我的测试。

错误发生在第 22 行,即使只是使用“.Content”。

由于这是我第一个访问 Word 的 VBA 脚本,我可能会犯一些简单的错误。但值得注意的是,Word 文档在出现错误行之前已成功复制并打开。

Option Explicit

Sub Merge()
1    Dim WordDoc As Word.Document, N As Variant, i As Integer, j As Integer
2    'i = Range("C2").Value  'set formula to count relevant items
3    Dim wordApp As Word.Application
4    Dim source As String
5    Dim destination As String
6    Dim xlobj As Object
7    Set xlobj = CreateObject("Scripting.FileSystemObject")
8    'format: object.copyfile,source,destination,file overright(True is default)
9    source = "C:\Users\brian\Documents\Fiverr leads\hhornig89 - loan sheets\Documents\Loan Model V1\MERGE TEMPLATE - CONSTRUCTION LOAN AGREEMENT.docx"
10    destination = "C:\Users\brian\Documents\Fiverr leads\hhornig89 - loan sheets\Documents\Loan Model V1\WORKING - CONSTRUCTION LOAN AGREEMENT.docx"
11    xlobj.CopyFile source, destination, True
12    Set xlobj = Nothing
13    Set wordApp = CreateObject(Class:="Word.Application")
14    wordApp.Options.SaveInterval = 0
15    Set WordDoc = wordApp.Documents.Open("C:\Users\brian\Documents\Fiverr leads\hhornig89 - loan sheets\Documents\Loan Model V1\WORKING - CONSTRUCTION LOAN AGREEMENT.docx")
16    wordApp.Visible = True
17    Dim dataws As Worksheet
18    Set dataws = ThisWorkbook.Worksheets("Merge Fields")
19    N = dataws.Range("a1:b1").Value 'test range
20   'For j = 1 To i
21    With wordApp
22      With WordDoc.Content.Find
23            .Text = N(1, 1)
24            .Replacement.Text = N(1, 2)
25            .Wrap = wdFindContinue
26            .MatchWholeWord = True
27            .Execute Replace:=wdReplaceAll
28      End With
29    End With
30    'Next j
31    wordApp.ActiveDocument.Save
32    wordApp.ActiveDocument.Close
33    wordApp.Quit
34
35    Set wordApp = Nothing
36    Set WordDoc = Nothing
End Sub
excel vba runtime-error
1个回答
0
投票

我会放弃库参考并在此处使用后期绑定。抛弃

WordDoc
,只参考
ActiveDocument

Option Explicit

Sub Merge()

    Dim N As Variant, i As Integer, j As Integer
    'i = Range("C2").Value  'set formula to count relevant items
    Dim wordApp As Object
    Dim source As String
    Dim destination As String
    Dim xlobj As Object
    
    Set xlobj = CreateObject("Scripting.FileSystemObject")
    
    'format: object.copyfile,source,destination,file overright(True is default)
    source = "C:\Users\brian\Documents\Fiverr leads\hhornig89 - loan sheets\Documents\Loan Model V1\MERGE TEMPLATE - CONSTRUCTION LOAN AGREEMENT.docx"
    destination = "C:\Users\brian\Documents\Fiverr leads\hhornig89 - loan sheets\Documents\Loan Model V1\WORKING - CONSTRUCTION LOAN AGREEMENT.docx"
    
    xlobj.CopyFile source, destination, True
    
    Set xlobj = Nothing
    Set wordApp = CreateObject("word.Application")
    
    wordApp.Options.SaveInterval = 0 'what's the point of this?
    wordApp.Documents.Open ("C:\Users\brian\Documents\Fiverr leads\hhornig89 - loan sheets\Documents\Loan Model V1\WORKING - CONSTRUCTION LOAN AGREEMENT.docx")
    wordApp.Visible = True
    
    Dim dataws As Worksheet
    Set dataws = ThisWorkbook.Worksheets("Merge Fields")
    
    N = dataws.Range("a1:b1").Value 'test range
    
   'For j = 1 To i
   
        With wordApp
           .ActiveDocument.Content.Find.Execute FindText:=N(1, 1), ReplaceWith:=N(1, 2), Replace:=2
        End With
    
    'Next j
    
    wordApp.ActiveDocument.Close True
    wordApp.Quit

    Set wordApp = Nothing
    
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.