• ベストアンサー

エクセルからワードの文書を開いて、その後開いた文書を”閲覧レイアウト”で表示したい

エクセルのマクロの超初心者です。 今、こんな事をしたくていろいろ調べながら遣っていますが、上手くいきません。どなたか方法を教えて下さい。 ド素人ですので出来るだけ簡単な方法がありがたいです。 1.エクセルシート上の”釦”を押すと指定したワードの文書を開く。 2.開いたワード文書は”閲覧レイアウト”に自動的に変更して表示。 今、エクセルから、ワードの文書は開けるようになりましたが、 次のワード側で表示を自動的に”閲覧レイアウト”に変更出来ません。 ワード側(または、エクセル側)でマクロをどんな風に記述すれば良い のか、ご教授を宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • end-u
  • ベストアンサー率79% (496/625)
回答No.1

Wordにもマクロ記録がありますからそれが参考になるはずです。 それとWordVBAの[ReadingLayout プロパティ]のヘルプを確認してください。 >今、エクセルから、ワードの文書は開けるようになりました... どういうコードか不明ですが、簡易なサンプルで With GetObject("C:\temp\test.doc")   .Application.Visible = True   .ActiveWindow.View.ReadingLayout = True End With

sudare-m
質問者

補足

end-u様 早速のご回答をありがとうございました。 ご教示の通り、ワード側のマクロ記録で作成しました。 このマクロを実行すると”閲覧レイアウト”に変更が出来ます。 が、出来ればこの操作を手動でするのではなく、エクセルから、 ワードの文書を開いたとき自動でやりたいのですが・・・。 このマクロを自動で実行するのは可能でしょうか。 Sub 閲覧レイアウトに変える() Set wrd = CreateObject("Word.Application") Documents("ワードの文書.doc").Activate ActiveWindow.View.ReadingLayout = Not  ActiveWindow.View.ReadingLayout End Sub

その他の回答 (1)

  • end-u
  • ベストアンサー率79% (496/625)
回答No.2

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 を参照追加すれば良いです。

sudare-m
質問者

お礼

end-u様 ありがとうございました。 早速test1で試して見ましたところ 思い通りの結果を得る事が出来ました。 test1で充分ですが、test2、test3もやって見て 勉強させていただきます。 ありがとうございました。 超初心者に対してご親切なご指導を感謝します。

関連するQ&A