简体   繁体   English

VBA访问 - 查找和替换Word文档中的文本

[英]VBA Access - Find and Replace text in Word Document

I have successfully written some VBA code in Excel which opens an existing Word document, finds and replaces a string based on information in the Excel worksheet. 我已经在Excel中成功编写了一些VBA代码,它打开现有的Word文档,根据Excel工作表中的信息查找并替换字符串。

As the source data exists comes from an Access Database, I thought I would try and move the VBA code into Access and run it from there. 由于源数据存在来自Access数据库,我想我会尝试将VBA代码移动到Access中并从那里运行它。

The updated code works mostly but strangely, the part of the code which finds and replaces the text string doesn't work when I run it in access. 更新的代码主要起作用,但奇怪的是,当我在访问中运行它时,查找和替换文本字符串的代码部分不起作用。

Sub CreateFormsPDF()

'   Creates Garda Vetting Forms NVB1 in Word and saves as PDF
    Dim WordApp As Object
    Dim WordDoc As Object
    Dim db As Database
    Dim rs As Recordset
    Dim Records As Integer
    Dim IDAnchor As String
    Dim ID As String
    Dim FilePath As String, SaveAsName As String

    FilePath = "N:\"

'   Start Word and create an object (late binding)
'   Document already exists so reference this
    Set WordApp = CreateObject("Word.Application")
    Set WordDoc = WordApp.Documents.Open(FilePath & "Form1.docx")

    WordApp.Application.Visible = True

'   Point to the relevant table in the Current Database
    Set db = CurrentDb
    Set rs = db.OpenRecordset("qryMailingList", dbOpenDynaset, dbSeeChanges)
    Records = rs.RecordCount

'   Cycle through all records in MailingList Query
    Do Until rs.EOF

'   Define IDAnchor
    IDAnchor = "$$ID$$"

'   Assign current data to variables
    ID = rs!StudentID

'   Determine the filename
    SaveAsName = FilePath & ID & ".pdf"

'   Send commands to Word
    With WordApp
        With WordDoc.Content.Find
            .Text = IDAnchor
            .Replacement.Text = ID
            .Wrap = wdFindContinue
            .Execute Replace:=wdReplaceAll
        End With
        .ActiveDocument.SaveAs2 FileName:=SaveAsName, FileFormat:=17
    End With

    IDAnchor = ID

            rs.MoveNext
    Loop

    WordApp.Quit savechanges:=wdDoNotSaveChanges
    Set WordApp = Nothing
    Set WordDoc = Nothing
    Set rs = Nothing
    Set db = Nothing

    MsgBox Records & " Forms Created"

End Sub

The code executes fine, with one exception which is the Find and Replace element in Word ie 代码执行正常,有一个例外,即Word中的查找和替换元素

'   Send commands to Word
    With WordApp
        With WordDoc.Content.Find
            .Text = IDAnchor
            .Replacement.Text = ID
            .Wrap = wdFindContinue
            .Execute Replace:=wdReplaceAll
        End With
        .ActiveDocument.SaveAs2 FileName:=SaveAsName, FileFormat:=17
    End With

What is even stranger is that I have a version of this code running via Excel and this runs without any problems at all and I've lifted this section of code from that subroutine exactly as is. 更奇怪的是,我有一个通过Excel运行的代码版本,并且运行完全没有任何问题,我完全按原样从该子程序中提取了这部分代码。 So this works in Excel, but not in Access but I've no idea why. 所以这适用于Excel,但不适用于Access,但我不知道为什么。

Would really appreciate any help that might be available 真的很感激可能提供的任何帮助

Many thanks... 非常感谢...

Actually I've just figured it out myself...I hadn't referenced the Word object library under tools. 实际上我自己已经弄明白了...我没有在工具下引用Word对象库。

Always something simple! 总是很简单!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM