[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『wordと連携して差し込み印刷をvbaで表示させたい』(ももぞの)
差し込みデータとwordのテンプレートは
作れたので、あとはエクセルのvbaを作って
ボタンを押すと該当wordファイルの差し込み印刷が実行されて
プリンタ選択画面が出るようにしたいと考えています。
エクセルでwordの差し込みデータをvbaを使って
整形してそのままwordの立ち上げまではできたのですが、
印刷が通常の印刷でのプリンタ選択画面しかでてきません。
差し込みデータの全て印刷を実行してプリンタの選択画面が
でてくるvbaはどう書いたら良いでしょうか?
wordのマクロで差し込みデータ印刷をやってみたのですが
印刷実行しないとコードが出てこず上手くいきませんでした。
知っている方がいたら教えてください。
< 使用 Excel:Excel2016、使用 OS:Windows10 >
おはようございます ^^ ワードVBAはほとんど解らないので回答は出来ませんが エクセルだけで済ませた方が簡単で解りやすい。という。 ご意見も多数ある様ですよ。どぉしてもワードだ!という 事でしたら他の方の回答をお待ちくださいませ。 。。。でわ。。。m(_ _)m (隠居じーさん) 2020/01/10(金) 08:57
Application.Dialogs(xlDialogPrinterSetup).Show
Wordマクロの場合:
Application.Dialogs(wdDialogFilePrintSetup).Show
ところで、実は選択画面を使わずに、目的のプリンタに変えてしまえば良かったりはしませんか?
ExcelでもWordでも同じですが、マクロで Debug.Print Application.ActivePrinter とすると、現在のプリンタ名が得られます。 まずは、ExcelやWordを全て終了し、切り替えたいプリンタを既定のプリンタに設定しておいてから起動し直し、どんな文字列になっているか控えておいてください。
(Excelの場合は、プリンタ一覧にある文字列の後ろに、「on Ne04:」のように、番号っぽい文字列が付加されるようです)
後は、マクロで Application.ActivePrinter = "プリンタ名" とすれば、切り替えできる事でしょう。
(???) 2020/01/10(金) 10:18
○Y様
やってみたのですが以下の通りで、
印刷は実行されるのですが、EXCELにこのまま取り込んでも
上手くいかないのです。
Sub Macro2()
'
' Macro2 Macro
'
'
ActivePrinter = "Canon series" With ActiveDocument.MailMerge .Destination = wdSendToPrinter .SuppressBlankLines = True With .DataSource .FirstRecord = wdDefaultFirstRecord .LastRecord = wdDefaultLastRecord End With .Execute Pause:=False End With End Sub
○???様
アドバイス頂きありがとうございます。
アドバイスどおりやってみたのですが、これはプリンタの選択を
出している認識なのですが合っていますでしょうか?
説明が下手で申し訳無いです。
実は複数のプリンタがあるので、印刷ダイアログをvbaで表示させて
あとはマウスで印刷ボタンを押すと印刷されるようにしたかったのですが、
可能でしょうか?
Wordマクロだと上記の通りのマクロにしかならず、
エラーがでて上手く動きませんでした。
もしわかれば教えて頂けますと助かります。
(ももぞの) 2020/01/14(火) 18:15
SendKeysを使う手もありますが、不安定なのでお薦めはしません。(SendKeys "^p", True)
なので、プリンタを選択するダイアログを表示する方法を書きました。 プリンタを選んでおけば、後は印刷命令を実行するだけで用が足りますよね? 最も安全確実な方法だと思うのですが。
(???) 2020/01/14(火) 18:39
ご返信いただきありがとうございます。
なるほど、知りませんでした。
印刷実行だけをすると、差し込みデータではなく、
普通の印刷になってしまうのですが、
これを回避する方法はありますでしょうか?
Wordでマクロを記録して覗いてみたのですが、
これをこのままEXCELに入れても実行エラーとなってしまいます。
このマクロ内容をEXCELで実行する方法か、
Wordのマクロの実行をEXCELから指示を出すVBAは無いでしょうか?
Sub Macro2()
ActivePrinter = "Canon series" With ActiveDocument.MailMerge .Destination = wdSendToPrinter .SuppressBlankLines = True With .DataSource .FirstRecord = wdDefaultFirstRecord .LastRecord = wdDefaultLastRecord End With .Execute Pause:=False End With End Sub
もし知っていたら教えて貰えますと助かります。
どうぞよろしくお願いいたします。
(ももぞの) 2020/01/15(水) 18:06
こんばんは ^^ 確かCreateobjectでワードアプリケーションを起動し 起動済でしたら Getobject ? オブジェクト変数に格納しておいて オブジェクト変数名.Run ワードマクロ名 で行けたよ〜な気がします。間違えていましたら お許しを、テストしてません。。。^^; m(_ _)m ちょっと いまからしてみます。。。 (隠居じーさん) 2020/01/15(水) 19:50
こんな感じでしょうか ^^; Excel2016ですとデフォルトでオフイスのライブラリが参照されていますので そのままでいけるよ〜ですね。 Option Explicit Sub main() Dim Wd As Object Set Wd = CreateObject("Word.Application") Wd.Visible = True Wd.Run "ZukeiLoad" Wd.Activate MsgBox "確認!" Wd.Visible = False Wd.Quit False Set Wd = Nothing End Sub (隠居じーさん) 2020/01/15(水) 20:22
>>Excel2016ですとデフォルトでオフイスのライブラリが参照されていますので そのままでいけるよ〜ですね。
↑
CreateObject。。。なので関係無いかとか、 ふと脳裏をよぎっただけなので。何の根拠も裏付けも御座いませんでw( ̄▽ ̄)。。。 軽率な書込みで済みません。無視してやってください。。。m(_ _)m 話は変わりますが。。。 よほどうまくコーディングしないとバックグラウンドプロセスにワード様がわんさか 発生して重大な局面になる可能性も無きにしもあらず。のような気がいたします。 でわでわ。 (隠居じーさん) 2020/01/16(木) 07:07
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.