アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセルのマクロの超初心者です。
今、こんな事をしたくていろいろ調べながら遣っていますが、上手くいきません。どなたか方法を教えて下さい。
ド素人ですので出来るだけ簡単な方法がありがたいです。

1.エクセルシート上の”釦”を押すと指定したワードの文書を開く。

2.開いたワード文書は”閲覧レイアウト”に自動的に変更して表示。

今、エクセルから、ワードの文書は開けるようになりましたが、
次のワード側で表示を自動的に”閲覧レイアウト”に変更出来ません。
ワード側(または、エクセル側)でマクロをどんな風に記述すれば良い
のか、ご教授を宜しくお願いします。

A 回答 (2件)

Wordにもマクロ記録がありますからそれが参考になるはずです。


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

この回答への補足

end-u様
早速のご回答をありがとうございました。
ご教示の通り、ワード側のマクロ記録で作成しました。
このマクロを実行すると”閲覧レイアウト”に変更が出来ます。
が、出来ればこの操作を手動でするのではなく、エクセルから、
ワードの文書を開いたとき自動でやりたいのですが・・・。
このマクロを自動で実行するのは可能でしょうか。

Sub 閲覧レイアウトに変える()
Set wrd = CreateObject("Word.Application")
Documents("ワードの文書.doc").Activate
ActiveWindow.View.ReadingLayout = Not  ActiveWindow.View.ReadingLayout

End Sub

補足日時:2010/02/02 18:01
    • good
    • 0

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
を参照追加すれば良いです。
    • good
    • 0
この回答へのお礼

end-u様
ありがとうございました。
早速test1で試して見ましたところ
思い通りの結果を得る事が出来ました。


test1で充分ですが、test2、test3もやって見て
勉強させていただきます。
ありがとうございました。
超初心者に対してご親切なご指導を感謝します。

お礼日時:2010/02/03 17:33

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!