Excelで複数シートを一度に印刷したい

こんにちは。いつも勉強させてもらっております。
表題のとおり、Excelの複数シートを選択して一度に印刷する、という処理を作ろうとしているのですが、
この「複数シートを選択する」というところの実装方法でちょっと悩んでいます。

とりあえず思いついている方法としては、

1.全シート名を取得する
2.セレクタの一部を変数化し、先頭シートのシート名タブをクリック(Simulate不可)
3.TypeIntoでCtrlキーダウンの入力を送る(セレクタ指定なし)
4.取得したシート名リストを繰り返し対象として、対象シートの時に2.同様に設定してシート名タブをクリック(Simulate不可)
5.TypeIntoでCtrlキーアップの入力を送る(セレクタ指定なし)

というもので、この後ホットキー入力で印刷ショートカットを実行することで、
ひとまず求めている処理の実装はできました。

ただ、なんとなく「Ctrlキーダウンしてシート名タブをクリックする」というアクションが
微妙だなあと感じておりまして、(わかれ!わかってくれ!!)
他の考え方でも実装できるよ、というものがあればご教示頂きたいと考えております。

EXCEL本願なのですが…

1.全シート名を取得する
2.印刷対象外のシートを削除する。
3.印刷オプションで、「ブック全体を印刷」を指定、印刷。

image

4.ブックを保存しないで破棄する

こんなんではダメすか(^^♪

なるほど、対象外のシートを削除してから全体を印刷するのは思いつきませんでした。
指定シートの削除がアクティビティで提供されていればもっとゴキゲンに作り込めそうですが、
そこはその内提供されるのを期待するしかないですね・・。

ご回答ありがとうございました。どっちが安定して動いてくれるか検証してみます。

その代わり、シートを移動アクティビティがありますので、それも利用できますね。

VBAを実行して印刷する方法もあります。参考までに

1)以下のコードをメモ帳に張り付け

Attribute VB_Name = "Module1"
Sub printOut(printArr() As String)
    Sheets(printArr).printOut
End Sub

2)メモ帳の名前と拡張子を以下の通りに変更
Module1.bas
*例えば、プロジェクト直下に配置
3)配列の変数(selectSheet)を作成
→印刷したいシート名を配列に格納
(ここでは、Sheet1,Sheet2を印刷することを想定)
4)「Excel アプリケーション スコープ内」に「VBAの呼び出し」を配置
5)「VBAの呼び出し」のプロパティを画像の通りに入力


6)VBAを呼び出しを使用する際に設定が必要なため、以下の記事を参照
https://blog-tips.sekenkodqx.jp/2019/12/02/uipath-activity-excel-invoke-vba/

変数で印刷したいシート名を設定すれば、複数のシートを印刷することができます。
UI操作でないので、安定した動作になると思います。

1 Like

返信遅くなりましてすみません。
使わないファイルにシートを移動させて疑似的に削除してしまう感じですかね。
シートの移動アクティビティはどうも環境によって動作しない印象がありますが、
使える環境ならUI操作を印刷部分だけに抑えられそうですね。
ありがとうございます。

こちらも返信遅くなりまして失礼いたしました。
VBA呼び出しは完全に思考の外でした・・。こちらもちょっと試してみます。
ありがとうございます。

1 Like