エリックは会社情報のExcelデータベースを持っています。彼は、Excelマクロを使用して、住所と情報をデータベースから別のWord文書にコピーしたいと考えています。エリックは、情報が貼り付けられる特定のWord文書をExcelマクロで開く方法に興味があります。

このタスクを実行する1つの方法は、Excelを使用しないことです。代わりに、Wordの差し込み印刷機能を使用してExcelデータベースから情報を取得します。

このアプローチは、明確に定義された情報からドキュメントを作成する場合に最適です。ただし、一連のドキュメントを開いて、Excelデータベースからドキュメントにデータをコピーする必要がある場合は、差し込み印刷ではうまくいきません。

Wordには、マクロを使用してさまざまなOfficeアプリケーションを操作するための特別な名前があります。OfficeAutomationです。 Office Automationマクロの作成は、Excelなどの特定のアプリケーション内でのみ機能するマクロを作成するよりも少し複雑です。あなたがしたいと思うかもしれないことの1つは、OfficeAutomationアプリケーションに関する多くの情報を含む無料のヘルプファイルをダウンロードすることです。次のMicrosoftページからファイルをダウンロードできます:

http://support.microsoft.com/kb/302460

Excelマクロ内からWord文書を開くための基本的な手順は、Wordアプリケーションを参照するオブジェクトを作成し、そのオブジェクトを使用して文書を開くことです。次のコードは、この概念を示しています。

Sub OpenWord()

Dim wdApp As Object     Dim wdDoc As Object     Set wdApp = CreateObject("Word.application")

Set wdDoc = wdApp.Documents.Open _       (FileName:="C:\Path\myTestDoc.doc")



' put your code here for working with Word ' This is Word VBA code, not Excel code

wdDoc.Close savechanges:=False     Set wdDoc = Nothing     wdApp.Quit     Set wdApp = Nothing End Sub

開きたいドキュメントのパスとドキュメント名を変更する必要がありますが、このコードは、ドキュメントを開くために何をする必要があるかを非常にうまく示しています。書かれているように、Word文書(実際には、Wordアプリケーション全体)は画面に表示されません。アプリケーションを表示したい場合は、マクロの先頭近くで次のコード行を使用する必要があります:

wdApp.Visible = True

Excelマクロ内からWordファイルを操作する別の方法は、DDEとSendKeys関数を使用して情報をコピーすることです。

次のDDEコマンドについて考えてみます。

ChannelNumber=Application.DDEInitiate{ _   app:="WinWord", topic:=FullPath

DDEInitiateメソッドは、appとtopicの2つのプロパティを使用します。 appプロパティは、DDEを介して開いているアプリケーションを示します。典型的な例は、電卓の「calc」または「WinWord」(この場合)です

Wordアプリケーション用。トピックプロパティは、開いているドキュメントファイルへのフルパスを示します。この場合、フルパスはFullPath変数に含まれています。

このメソッドを使用すると、ドキュメントを開いてから、SendKeysを使用してそのドキュメントに情報をコピーできます。

Sub PasteExcel2Word()

Dim channelNumber As String  'Application Handle     Dim FullPath As String

FullPath = 'C:\MyFolder\MyFile.Doc'     'Replace above with a file or loop of files

Selection.Copy  'Assumes you hilighted what you want copied

channelNumber = Application.DDEInitiate( _       app:="WinWord", topic:=FullPath     SendKeys "^v", False

Application.DDETerminate channelNumber End Sub

Copyメソッドを使用して情報をクリップボードにコピーし、SendKeysが^ v(Ctrl + V)を使用して、DDEInitiateを使用して開いたWord文書に情報を貼り付けます。

注:

このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

link:/ excelribbon-ExcelTipsMacros [ここをクリックして、新しいブラウザタブでその特別なページを開きます]

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(2423)は、Microsoft Excel 97、2000、2002、および2003に適用されます。