[[20200109194525]] 『wordと連携して差し込み印刷をvbaで表示させたい』(ももぞの) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『wordと連携して差し込み印刷をvbaで表示させたい』(ももぞの)

差し込みデータとwordのテンプレートは
作れたので、あとはエクセルのvbaを作って
ボタンを押すと該当wordファイルの差し込み印刷が実行されて
プリンタ選択画面が出るようにしたいと考えています。

エクセルでwordの差し込みデータをvbaを使って
整形してそのままwordの立ち上げまではできたのですが、
印刷が通常の印刷でのプリンタ選択画面しかでてきません。

差し込みデータの全て印刷を実行してプリンタの選択画面が
でてくるvbaはどう書いたら良いでしょうか?

wordのマクロで差し込みデータ印刷をやってみたのですが
印刷実行しないとコードが出てこず上手くいきませんでした。

知っている方がいたら教えてください。

< 使用 Excel:Excel2016、使用 OS:Windows10 >


 おはようございます ^^
ワードVBAはほとんど解らないので回答は出来ませんが
エクセルだけで済ませた方が簡単で解りやすい。という。
ご意見も多数ある様ですよ。どぉしてもワードだ!という
事でしたら他の方の回答をお待ちくださいませ。
。。。でわ。。。m(_ _)m
(隠居じーさん) 2020/01/10(金) 08:57

|wordのマクロで差し込みデータ印刷をやってみたのですが
|印刷実行しないとコードが出てこず上手くいきませんでした。
仮に一件だけのデータで、マクロ記録を取ってみればよろしいのでは?
(γ) 2020/01/10(金) 09:52

Excelマクロの場合:
 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


○隠居じーさん
コメントありがとうございます。
Wordの差し込み機能でバーコード表示をさせるために必要なので、
EXCELではなくWordの連携をしたいと思っています。
出来る限り頑張ってみたいと思います。

○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


VBAに用意されているのは、プレビュー画面を表示する事と、印刷する事だけです。 「印刷」ボタンを押した際の画面はアプリの機能であり、Windowsの機能ではないので、表示できません。

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.