Vba 为什么';for循环是否在第一站继续?
我一直在构建一个将数据从excel传输到word的代码。为了尝试这一点,我构建了一个带有数组列表的代码。检查单词中的每个数组,并在列表旁边放置一个字符串。但它并没有将数组放入循环中Vba 为什么';for循环是否在第一站继续?,vba,ms-word,Vba,Ms Word,我一直在构建一个将数据从excel传输到word的代码。为了尝试这一点,我构建了一个带有数组列表的代码。检查单词中的每个数组,并在列表旁边放置一个字符串。但它并没有将数组放入循环中 Sub CreateNewWordDoc() Dim wrdApp As Word.Application Dim wrdDoc As Word.Document Dim i As Integer Dim arr(12) arr(0) = "(249_L), 38,7 %"
Sub CreateNewWordDoc()
Dim wrdApp As Word.Application
Dim wrdDoc As Word.Document
Dim i As Integer
Dim arr(12)
arr(0) = "(249_L), 38,7 %"
arr(1) = "(248_R), 38,7 %"
arr(2) = "(249_M), 38,7 "
arr(3) = "(3560), 38,7 "
arr(4) = "(3550), 38,7 %"
arr(5) = "(349_), 38,7 %"
arr(6) = "(348_), 38,7 %"
arr(7) = "(451), 38,7 %"
arr(8) = "(450L), 38,7 "
arr(9) = "(450R), 38,7 "
arr(10) = "(151), 38,7 %"
arr(11) = "(150L), 38,7 %"
arr(12) = "(150R), 38,7 %"
Set wrdApp = CreateObject("Word.Application")
wrdApp.Visible = True
Set wrdDoc = wrdApp.Documents.Open("E:\ShareDrive_Ruehl\full-flexible-MBS-models_report\example-report\FullFlexibleGearbox - Copy (2).docx")
For i = 0 To 12
wrdDoc.Application.Selection.Find.Text = arr(i)
wrdDoc.Application.Selection.Find.Execute
wrdDoc.Application.Selection.InsertBefore arr(i) & "test"
Next
End Sub
我得到的输出如图所示。我的目的是找到“arr(I)
”并将arr(I)
文本放在它前面。但它只是查找array(0)
并粘贴arr(i)
text
这是您的代码稍微调整过的代码。请注意,使用
With
块可获得稍微更“干净”的外观,使用HomeKey可在下一次查找之前重置选择:
Dim wrdApp As Word.Application
Dim wrdDoc As Word.Document
Dim i As Integer
Dim arr(12)
arr(0) = "(249_L), 38,7 %"
arr(1) = "(248_R), 38,7 %"
arr(2) = "(249_M), 38,7 "
arr(3) = "(3560), 38,7 "
arr(4) = "(3550), 38,7 %"
arr(5) = "(349_), 38,7 %"
arr(6) = "(348_), 38,7 %"
arr(7) = "(451), 38,7 %"
arr(8) = "(450L), 38,7 "
arr(9) = "(450R), 38,7 "
arr(10) = "(151), 38,7 %"
arr(11) = "(150L), 38,7 %"
arr(12) = "(150R), 38,7 %"
Set wrdApp = CreateObject("Word.Application")
Set wrdDoc = wrdApp.Documents.Open("E:\ShareDrive_Ruehl\full-flexible-MBS-models_report\example-report\FullFlexibleGearbox - Copy (2).docx")
wrdDoc.Activate
wrdApp.Selection.HomeKey unit:=wdStory
For i = 0 To 12
With wrdApp.Selection
With .Find
.ClearFormatting
.MatchWildcards = False
.MatchWholeWord = False
.text = arr(i)
.Execute
End With
.InsertBefore arr(i) & "test"
.HomeKey unit:=wdStory
End With
Next
注意:您的需求很可能在不使用
选择的情况下实现,但需要进一步的信息。您创建word的新实例而不是使用当前实例的具体原因是什么?这毕竟是vba这个词。另外,如果使用“查找”和“选择”
,请在执行下一步操作之前始终使用“选择”Selection.collapseend
。我正在excel vba中使用它,因此我正在使用它打开。感谢您在@LocEngineer中的回复。我得到一个运行时错误424。“所需对象”。如果你知道这件事,请告诉我。我知道了。我已经从Excel中编辑了要使用的代码。另外,wrdApp.Documents.Open
不使用wrdApp对象也会导致错误。应该现在就做。非常感谢@LocEngineer