2017-07-21 1 views
1

私はExcelからWordにデータを転送するコードを作成しています。それを試すために、私は配列リストを使ってコードを作りました。単語の各配列をチェックし、リストの隣に文字列を配置するにはしかし、それはループ内の配列を取っていません。forループが最初のステーションに対して継続しないのはなぜですか?

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)のテキストです。ここで

enter image description here

+0

現在の単語を使用する代わりに、単語の新しいインスタンスを作成する具体的な理由はありますか?結局のところ、これは単語vbaです。また、 'Selection'でFindを使う場合は、' Next'の前に常に 'Selection.Collapse wdCollapseEnd'を使います。 – LocEngineer

+0

私はそれをExcelで使用していますので、私はそれを開いて使用しています。 –

答えて

1

あなたのコードは、少し調整しています。次を検索する前に選択をリセットするために見て、「クリーンアップ」もう少し、およびHomeKeyためWithブロックの使用に注意してください:

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 

注:ニーズはおそらくSelectionが、さらなる情報を使用することなく達成することができますそのために必要となるだろう。

+0

あなたの返信ありがとう@LocEngineerありがとうございます。私は実行時エラー424を得ています。 "Object required"。それについて何か知っていれば教えてください。 –

+0

私は参照してください。 Excel内から使用するコードを編集しました。また、wrdAppオブジェクトのない 'wrdApp.Documents.Open'もエラーを引き起こしました。今それをする必要があります。 – LocEngineer

+0

ありがとうございます@LocEngineer –

関連する問題