2017-07-05 1 views
0

Excel VBAを使用して単語テンプレートを開き、Excelスプレッドシートの情報をテンプレートに挿入しています。そこから、スプレッドシート上のボタンをクリックして、それをクリックするたびに別の行をドキュメントに挿入します。私が遭遇している問題は、ボタンマクロを実行すると、すでに開いている文書ではなく、別の単語文書を開き、ボタン情報をペーストするということです。私は下に私のコードを添付し、私はそれを回避する方法を見つけることができない簡単な修正だと私は信じています。VBAで既に開いている単語文書を参照する

Sub RepairCal() 

Dim objWord As Object 
Dim objDoc As Object 

    Set objWord = CreateObject("Word.Application") 
    objWord.Visible = True 
    Set objDoc = objWord.Documents.Open("C:\Users\z003narc\Documents\Gage Lab Form Template.docm") 

objWord.Activate 

With Selection 

    objWord.ActiveDocument.Selection.MoveDown count:=6 
    objWord.ActiveDocument.Selection.MoveRight count:=5 
    objWord.ActiveDocument.Selection.TypeText Text:="Repair and Calibration" 

End With 

End Sub 
+0

を。あなたがMicrosfoft Word型ライブラリへの参照を追加し、 'Object'の代わりに' Word.Application'と 'Word.Document'を使って作業すると、あなたの人生はもっと楽になります。 –

答えて

0

この試してみてください:あなたのホストは、エクセルであれば `Selection`は* Excelで*選択しているものを参照している...しかし、` Selection`でブロックが何もしていないことを、それを削除し、

With objWord 

    .Selection.MoveDown count:=6 
    .Selection.MoveRight count:=5 
    .Selection.TypeText Text:="Repair and Calibration" 

End With 
+0

ありがとうございました! – Jmaragno

0

毎回これを実行するときに文書を開いているとおっしゃいますか?あなたがコードを書いた方法、それはこの行います:

1)を開き、新しい空白のMicrosoft Wordのプロセス

2)新しいプロセスでは、あなたが

3を選択したワークブックを開くには)新しいを作りますあなたはそれはあなたがすでに、あなたがを行うには、オープン必要があるだろうしているファイルを添付したい場合は、アクティブなウィンドウ

4)does stuff

を処理210の代わりにCreateObjectです。だから、変更:

Set objWord = CreateObject("Word.Application") 

Set objWord = GetObject(, "Word.Application") 

にこれは、そのプロセスでブックを開き、現在開いているプロセスにアタッチします。しかし、毎回その文書の新鮮なコピーを開くことになります。なぜなら、それはあなたがしていることだからです。

+0

こんにちはBusse、それは私が問題に遭遇していたところですが、毎回新しい文書を開くのではなく、すでに開いている文書を参照することを望みます。申し訳ありませんが、私はVBAをかなり新しくしていて、まだ自分の道を学んでいます – Jmaragno

+0

謝罪したり、生きたり学んだりしないでください!私は質問を誤解したと思う。 – Busse

関連する問題