エンジニア
フォルダの中にあるEXCELをまとめて印刷できないのか!?
いちいちファイルごとに印刷はメンドクサすぎる!!!
そんな猫の手も借りたい熱いあなたのために、マクロEXCELを作成しました。
作品集のページにマクロEXCELがあります。
マクロEXCELと同じ階層に、「印刷フォルダ」というフォルダをつくり印刷したいEXCELを入れるだけで、データを入力しているシート全てを印刷します。
詳細は「動作確認」の章をご覧ください。
IT系の記事はライフプラン系の記事とは異なり、エンジニア文章チックで進めます。
気持ち要素0です。
簡素でタンパクな文です。
ご了承ください。
動作内容
左図のように、マクロEXCELと同じ階層の「印刷フォルダ」内の
EXCELファイルを全て印刷します。
(xls,xlsx形式どちらもOK)
EXCEL内のデータが入力されたすべてのシートを印刷します。
左図は「印刷したいEXCEL1.xlsx」の1,2シート目にデータが 入力されていた場合)
使用方法
ソースコード
コントロールフォームのボタンを使用しています。
ボタンの名前は"一括印刷"となっています。
必要に応じて適宜変更してください。
※VBAの記述の作法はほとんど気にしていません(型宣言ぐらいです)。
初めての方は「これは動くだけのプログラムだ」と認識してください。
' '一括印刷マクロVer0.1 ' 'デフォルトで設定したプリンタを使って、印刷を行います '作者のEXCELが2007のため、バージョンの違いにより動かない可能性があります 'ご了承ください ' 'Ver0.0 リリース 'Ver0.1 変数の間違い修正,メッセージボックスの分岐の定義を明確化 Sub 一括印刷() '変数定義 Dim strFilePath As String '印刷したいEXCELがあるパスを格納 Dim strFileName As String '印刷したいEXCELファイルがあるパスを格納 Dim checkSheet As Worksheet 'ワークシートを選ぶ用 Set checkSheet = Worksheets("印刷内容確認用") Dim cntForPath As Long 'for用 Dim cntForPrint As Long 'for用 Dim answerMsg As Long 'メッセージボックス用 answerMsg = MsgBox("印刷しますか?", vbYesNo, "印刷確認") If answerMsg = vbYes Then 'ファイルパス取得 strFilePath = ThisWorkbook.Path & "\印刷フォルダ\" strFileName = Dir(strFilePath & "*.*") checkSheet.Columns("A").ClearContents '確認シートの列(A)の文字削除 cntForPath = 1 Do Until strFileName = "" '確認シートにパス記入 checkSheet.Range("A" & cntForPath).Value = strFilePath & strFileName cntForPath = cntForPath + 1 strFileName = Dir() Loop '印刷 cntForPrint = 1 For cntForPrint = 1 To checkSheet.Cells(Rows.Count, 1).End(xlUp).Row Workbooks.Open Filename:=checkSheet.Range("A" & cntForPrint).Value '一括印刷フォルダにあるEXCELをオープン ActiveWorkbook.PrintOut '開いたEXCELを印刷 ActiveWorkbook.Close savechanges:=False '開いたEXCELを閉じる Next cntForPrint ElseIf answerMsg = vbNo Then MsgBox ("印刷を中止します") End If End Sub
テストPCのスペック(プログラムを動かした環境)
- Office:EXCEL2007
- OS:windows8.1 64bit x64ベースプロセッサ
- CPU:Intel Celeron CPU1000M 1.80GHz,1.80GHz
- メモリ:4GB
補足(プログラム初めての方向け)
基本はネットで調べるでOK
プログラムを作っていくときは、機能の実装を優先することが前提ならネットで調べることを推奨します。
理由は、自分が困っていることは他の方も同じように感じているからです。
まずは本じゃなくてもよいです。
経験の話になりますが。
(別の記事でお話しします)
特に、VBAのような言語は使う人も多いため自分がVBAをはじめた頃に感じた困りごとは他の方が既に解決している場合が多いです。
また、解決していなくても調べ方(検索する言葉)を工夫すれば出た結果を組み合わせて解決できることがほとんどです。
今回、私が作成したマクロを例にすれば検索エンジンで検索すれば似たようなものがジャンジャン出ます。
"エクセル マクロ フォルダ内 印刷"とかで調べるとでます。
”エクセル”を”EXCEL”にかえたり、”VBA”というように意味が似通う言葉を選んであげると、
調べる幅が広がります。
人間からみると意味で関連づけするため、同じように見えますがPCからみると文字のコードで解釈するため(関連づけしない)、”EXCEL”と”エクセル”は別物となります。
今回のマクロが「自分の考えたものと違う!!」と感じた方は、自分にあったソースを探してみてください。
【2021/6/13】リンク追加
特におすすめしたいのがこのサイトです(Office Tanaka様のVBA Tipsページです)
私が勝手に大学のころからずっと(10年以上)お世話になっています。
調べながらプログラムが書けるようになってきたら
ある程度調べ方が身に付き、「プログラム作るってこんもんかぁ」と感じるようになったらVBAの記述の作法も見てみるとよいでしょう。
Excel VBAコーディング ガイドライン案 (引用元:Qiita @mima_ita様)
記述の作法がある理由は、「他の方が見るときにコードを分かりやすく読んでもらうため」です。
会社でも引用元のような内容に、素直に従うところ、独自ルールを作って従わないところ、マチマチで困惑しますが自分の基準を作っておくことは相手の考えを深く知る上で大事になります。
(自分が正しいとは思っちゃダメ、自分だけは律しましょう)
ちなみに、今回の私が作ったマクロはVBAの記述の作法にほとんど従っていません。
引用元のHP様の内容をみながら、「ココの書き方違うじゃーん!」と色々気付いて頂けると、プログラミングで大事な大事なスキルである「書き方って大事だな」という感覚を養えます。
感じて頂けると嬉しいです。
ネットは辞引的な勉強方法になります。
あわないなぁ、と感じた方はVBAのおすすめ本を3冊選びましたので、参考にして頂けるととても嬉しいです!
紹介している本はこちらです。
2000円未満(初心者-要点のみ)
2000円~3000円以下(初心者-全体)
3000円~4000円(脱初心者~中級者)
コメント スパム対応をしたつもり、コメントは残す方向で頑張ってます