Vba 为什么';for循环是否在第一站继续?

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 %"

我一直在构建一个将数据从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 %"
    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