- ベストアンサー
エクセルからワードの文書を開いて、その後開いた文書を”閲覧レイアウト”で表示したい
エクセルのマクロの超初心者です。 今、こんな事をしたくていろいろ調べながら遣っていますが、上手くいきません。どなたか方法を教えて下さい。 ド素人ですので出来るだけ簡単な方法がありがたいです。 1.エクセルシート上の”釦”を押すと指定したワードの文書を開く。 2.開いたワード文書は”閲覧レイアウト”に自動的に変更して表示。 今、エクセルから、ワードの文書は開けるようになりましたが、 次のワード側で表示を自動的に”閲覧レイアウト”に変更出来ません。 ワード側(または、エクセル側)でマクロをどんな風に記述すれば良い のか、ご教授を宜しくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
Wordにもマクロ記録がありますからそれが参考になるはずです。 それとWordVBAの[ReadingLayout プロパティ]のヘルプを確認してください。 >今、エクセルから、ワードの文書は開けるようになりました... どういうコードか不明ですが、簡易なサンプルで With GetObject("C:\temp\test.doc") .Application.Visible = True .ActiveWindow.View.ReadingLayout = True End With
その他の回答 (1)
- end-u
- ベストアンサー率79% (496/625)
ExcelVBAからWordでdocファイルをOpenするところからで良いのですよね? 先に書いたのはExcelVBAだったんですが、追加もしておきます。 "ワードの文書.doc"が、(例えば)"C:\documents"というフォルダに保存されている場合、 Sub test1() With GetObject("C:\documents\ワードの文書.doc") .Application.Visible = True .ActiveWindow.View.ReadingLayout = True End With End Sub Sub test2() Dim wrd As Object Set wrd = CreateObject("Word.Application") wrd.Visible = True With wrd.Documents.Open("C:\documents\ワードの文書.doc") .Windows(1).View.ReadingLayout = True End With Set wrd = Nothing End Sub ...な感じでどうでしょうね。 すでにWordが起動中だった場合、test1のGetObjectで開くと既存Wordのプロセスで開きます。 起動していなければ起動して開きます。(関連付けされてれば) test2のCreateObjectで開くと起動の有無に関わらず、Wordを新規プロセスで起動して開きます。 もしtest1がうまくいかなくて、「起動中のWordで開きたい、起動してない場合は起動させたい」場合は Sub test3() Dim wrd As Object On Error Resume Next Set wrd = GetObject(, "Word.Application") On Error GoTo 0 If wrd Is Nothing Then Set wrd = CreateObject("Word.Application") End If wrd.Visible = True With wrd.Documents.Open("C:\documents\ワードの文書.doc") .Windows(1).View.ReadingLayout = True End With Set wrd = Nothing End Sub こんな感じでどうでしょうか。 ExcelVBA側からWordを操作したい場合は"Word.Application"をObject型変数に格納して、 その変数内で処理をするようにすれば良いです。 WordVBA特有の文字列定数を使いたい場合は[ツール]-[参照設定]で Microsoft Word XX.X Object Library を参照追加すれば良いです。
お礼
end-u様 ありがとうございました。 早速test1で試して見ましたところ 思い通りの結果を得る事が出来ました。 test1で充分ですが、test2、test3もやって見て 勉強させていただきます。 ありがとうございました。 超初心者に対してご親切なご指導を感謝します。
補足
end-u様 早速のご回答をありがとうございました。 ご教示の通り、ワード側のマクロ記録で作成しました。 このマクロを実行すると”閲覧レイアウト”に変更が出来ます。 が、出来ればこの操作を手動でするのではなく、エクセルから、 ワードの文書を開いたとき自動でやりたいのですが・・・。 このマクロを自動で実行するのは可能でしょうか。 Sub 閲覧レイアウトに変える() Set wrd = CreateObject("Word.Application") Documents("ワードの文書.doc").Activate ActiveWindow.View.ReadingLayout = Not ActiveWindow.View.ReadingLayout End Sub