VBA 代码不断跳过我的 Find.Execute 代码
VBA code keeps skipping my Find.Execute Code
我是 VBA 的新手,我正在编写一个代码,通过查找关键字并替换它们来将数据从 Excel 复制到 Word。我的问题是代码创建了我要复制的文档的新版本,但随后忽略了我的代码来查找和替换。我认为我的问题出在我的声明上,但我真的不知道。这是我的代码:
Sub CopyDatatoWord()
Dim wb As Workbook
Dim ws As Worksheet
Dim wdDoc As Word.Documents
Dim wdApp As Word.Application
Dim myrange As Range
Set wb = Workbooks("Create Health Fair Forms.xlsm")
Set ws = wb.Worksheets("Data")
Set wdApp = CreateObject("Word.Application")
Set sel = wdApp.Selection
MkDir ("" & ws.Range("FilePath").Value & "")
wdApp.DisplayAlerts = wdAlertsNone
wdApp.Documents.Open("\hfd\repository\Screenings and Health Fair Forms\Basic Health Fair Templates3 - CW - Template.docm", Visible = True, ReadOnly = False).SaveAs ("" & ws.Range("FilePath").Value & "\CW.docm")
wdApp.DisplayAlerts = wdAlertsAll
wdApp.Visible = True
'Code works fine until this point, and then seems to ignore everything past this point.
For i = 13 To 30
With wdApp.Selection.Find
.Text = "&Excel.Application.ws.Cells(i, 40).Value&"
.Forward = True
.Wrap = wdFindContinue
.MatchWholeWord = True
.Format = False
.Replacement.Text = "&Excel.Application.ws.Cells(i, 39).Value&"
.Execute
End With
Next i
End Sub
我在网上看到其他帖子有人成功地创建了像我这样的代码,我一直在尝试重新创建它,但到目前为止都失败了。
如有任何帮助,我们将不胜感激。
很臭的代码
.Text = "&Excel.Application.ws.Cells(i, 40).Value&"
.Replacement.Text = "&Excel.Application.ws.Cells(i, 39).Value&"
大概应该是这样的
.Text = ws.Cells(i, 40).Value
.Replacement.Text = ws.Cells(i, 39).Value
此外,当我录制一个宏来进行查找替换时,它会给出以下代码
标记为 '<<<<<<<< 的行需要调整并添加到您的代码中
Selection.Find.ClearFormatting '<<<<<<<<
Selection.Find.Replacement.ClearFormatting '<<<<<<<<
With Selection.Find
.Text = "d"
.Replacement.Text = "XXXX"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False '<<<<<<<<
.MatchSoundsLike = False '<<<<<<<<
.MatchAllWordForms = False '<<<<<<<<
End With
Selection.Find.Execute Replace:=wdReplaceAll '<<<<<<<<
我是 VBA 的新手,我正在编写一个代码,通过查找关键字并替换它们来将数据从 Excel 复制到 Word。我的问题是代码创建了我要复制的文档的新版本,但随后忽略了我的代码来查找和替换。我认为我的问题出在我的声明上,但我真的不知道。这是我的代码:
Sub CopyDatatoWord()
Dim wb As Workbook
Dim ws As Worksheet
Dim wdDoc As Word.Documents
Dim wdApp As Word.Application
Dim myrange As Range
Set wb = Workbooks("Create Health Fair Forms.xlsm")
Set ws = wb.Worksheets("Data")
Set wdApp = CreateObject("Word.Application")
Set sel = wdApp.Selection
MkDir ("" & ws.Range("FilePath").Value & "")
wdApp.DisplayAlerts = wdAlertsNone
wdApp.Documents.Open("\hfd\repository\Screenings and Health Fair Forms\Basic Health Fair Templates3 - CW - Template.docm", Visible = True, ReadOnly = False).SaveAs ("" & ws.Range("FilePath").Value & "\CW.docm")
wdApp.DisplayAlerts = wdAlertsAll
wdApp.Visible = True
'Code works fine until this point, and then seems to ignore everything past this point.
For i = 13 To 30
With wdApp.Selection.Find
.Text = "&Excel.Application.ws.Cells(i, 40).Value&"
.Forward = True
.Wrap = wdFindContinue
.MatchWholeWord = True
.Format = False
.Replacement.Text = "&Excel.Application.ws.Cells(i, 39).Value&"
.Execute
End With
Next i
End Sub
我在网上看到其他帖子有人成功地创建了像我这样的代码,我一直在尝试重新创建它,但到目前为止都失败了。
如有任何帮助,我们将不胜感激。
很臭的代码
.Text = "&Excel.Application.ws.Cells(i, 40).Value&"
.Replacement.Text = "&Excel.Application.ws.Cells(i, 39).Value&"
大概应该是这样的
.Text = ws.Cells(i, 40).Value
.Replacement.Text = ws.Cells(i, 39).Value
此外,当我录制一个宏来进行查找替换时,它会给出以下代码 标记为 '<<<<<<<< 的行需要调整并添加到您的代码中
Selection.Find.ClearFormatting '<<<<<<<<
Selection.Find.Replacement.ClearFormatting '<<<<<<<<
With Selection.Find
.Text = "d"
.Replacement.Text = "XXXX"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False '<<<<<<<<
.MatchSoundsLike = False '<<<<<<<<
.MatchAllWordForms = False '<<<<<<<<
End With
Selection.Find.Execute Replace:=wdReplaceAll '<<<<<<<<