プロが教える店舗&オフィスのセキュリティ対策術

タイトルの件、下記のとおり質問いたします。

【前提】
●エクセルに、Sheet1、Sheet2がある
●ワードの文書1がある
●上記2つのファイルは同じフォルダにある。
●エクセルのSheet1の情報は、ワード文書へリンクされている。
 例:エクセルのSheet1のA1セルに、「あいうえお」と入力すると、ワード文書1の任意の部分に
 「あいうえお」と反映される「ワードを開かなくても」

【質問】
エクセルにて、下記の印刷できるマクロがほしいです。
●エクセル、Sheet1、Sheet2、ワード文書1を印刷できるマクロを、エクセル側にほしい。
●エクセルは開くが、ワードは閉じたまま、印刷したい。
●印刷するときに、ワードにて、「文書は変更されています。保存しますか?」というメッセージが
 出ないようにして、印刷をしたい。

ご存知の方、いらっしゃいましたら、宜しくお願いします。

A 回答 (2件)

aoyama-reikoさん、おはようございます。


印刷枚数は
Copies:=2
のように指定します。3枚なら Copies:=3 になります。

また、ワードの印刷で、ほんとに文書1~文書2 と連番になっているのならもっと簡単に書けるのですが、多分これは例で書いた文書名で実際は違うのでしょうから、Sub 変更後2 のようにそれぞれ明示しました。

Sub 変更後1()
  Dim wd As Object
  On Error GoTo line
  Application.ScreenUpdating = False
  Application.DisplayAlerts = False
  Set wd = CreateObject("Word.Application")
  With wd
    .documents.Open Filename:=ThisWorkbook.Path & "\文書1.doc"
    .ActiveDocument.PrintOut Copies:=1, Background:=False
    .ActiveDocument.Close False
    .Quit
  End With
  Set wd = Nothing
  Sheets(Array("Sheet1", "Sheet2")).PrintOut Copies:=2
line:
  Application.DisplayAlerts = True
  Application.ScreenUpdating = True
End Sub

Sub 変更後2()
  Dim wd As Object
  On Error GoTo line
  Application.ScreenUpdating = False
  Application.DisplayAlerts = False
  Set wd = CreateObject("Word.Application")
  With wd
    .documents.Open Filename:=ThisWorkbook.Path & "\文書1.doc"
    .ActiveDocument.PrintOut Copies:=1, Background:=False
    .ActiveDocument.Close False
    .documents.Open Filename:=ThisWorkbook.Path & "\文書2.doc"
    .ActiveDocument.PrintOut Copies:=1, Background:=False
    .ActiveDocument.Close False
    .Quit
  End With
  Set wd = Nothing
  Sheets(Array("Sheet1", "Sheet2", "Sheet3")).PrintOut Copies:=2
line:
  Application.DisplayAlerts = True
  Application.ScreenUpdating = True
End Sub
    • good
    • 0

前回 

http://okwave.jp/qa6740812.html でaoyama-reikoさんの、今回と同じような質問に回答したmerlionXXです。

前回との違いは、ワード終了時の保存の有無のメッセージをだしたくないということですね?
なかなか回答がつきませんね。
わたしも回答を迷いました。
なぜならワードを開かずに印刷するという無理難題を解決できなかったから。

妥協案ですがこんな感じではどう。
ワードが開いたことをユーザーに気づかせず印刷し、黙って閉じる方法です。

Sub Word_Print02()
  Dim wd As Object
  On Error GoTo line
  Application.ScreenUpdating = False
  Application.DisplayAlerts = False
  Set wd = CreateObject("Word.Application")
  With wd
    .documents.Open Filename:=ThisWorkbook.Path & "\文書1.doc"
    .ActiveDocument.PrintOut Background:=False
    .ActiveDocument.Close False
    .Quit
  End With
  Set wd = Nothing
  Sheets(Array("Sheet1", "Sheet2")).PrintOut
line:
  Application.DisplayAlerts = True
  Application.ScreenUpdating = True
End Sub

いかがでしょう?

この回答への補足

ご回答ありがとうございます。

大変、恐縮ですが、下記の場合には、どのように変更すればよろしいでしょうか??

【変更前】
Sheet1【1枚】Sheet2【1枚】文書1【1枚】

【変更後1】

Sheet1【2枚】Sheet2【2枚】文書1【1枚】

【変更後2】

Sheet1【2枚】Sheet2【2枚】Sheet3【2枚】文書1【1枚】文書2【1枚】


宜しくお願いします。

補足日時:2011/05/22 23:11
    • good
    • 0
この回答へのお礼

いつも、ご回答ありがとうございます。
大変、助かりました。

お礼日時:2011/05/21 01:06

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