今日は、先日いただきましたリクエストを取り上げます。
『昔仕事で、「申込書」「名簿」「許可書」に名簿の名前をいっぺんにうちこんで同時にプリントアウトする、
という高度なことを先輩がやってまして、(中略)あれはどういったプログラムだったのでしょう?』
多分こういう質問だろうと僕は解釈しました。
つまり、「別シートにある名簿から名前を取り込んで、その都度、印刷しては、次の名前を取り込む、
という繰り返しをプログラムで行う方法を教えてほしい」と。
解釈が違っていたら、また取り上げますので、ご連絡ください・・・
さて、以下のような発注書があるとします。
注目してほしいのは、A4(A列4行目)の数字です。この数字は、顧客Noなのです。
この数字に対応した顧客名がA6に読み込まれます。
実は、別シートに顧客名簿があるのです。ご覧いただきましょう。
さて、A6には、関数を設定してあります。
A4の値に対応した顧客名を名簿から参照する関数です。そうです、VLOOKUP関数ですね。
さて、さっそくコードを書いてみましょう。
ALT + F11 で、VisualBasicEditorを起動します。
「挿入」→「標準モジュール」をクリックします。
そこに、次のようにコードを記述してください。
一応、画像も掲載しておきます。
名簿の顧客が増えても全員印刷できるように、名簿の最終行は、プログラムで判断しています。
また、この段階では、実際に印刷するわけではなく、確認のために印刷プレビューするコードになっていますので、
ご了承ください。
それでは、実行してみましょう。
Excelに切り替えて、Excel2003までは、「ツール」→「マクロ」→「マクロ」とクリックします。
Excel2007は、Altキーを押しながらF8キーを押してください。
実行ボタンをクリックします。
プレビュー画面が表示されますね。
この画面を閉じると、即座に次の顧客名でプレビューされます。
うまくいってますね。
実際に連続印刷する場合は、
ActiveSheet.PrintPreview
を、以下のように変更します。
ActiveSheet.PrintOut
ただし、顧客の人数が多い場合には、若干注意が必要です。
というのも、プリンタによっては、対応できずにエラーになることがあるからです。
この場合、対応するコードを追加したほうが安全です。
このコードについては、改めてご紹介しますね。
VBAって奥が深いですね。
奥が深いと言えば、エクセルって色々な機能があって、使い方によってはまるで手品(マジック)のようになるんですよね。
VBAをからめると、さらにドッキリ度がアップします。親子のやり取りを通じて、そんなエクセルの面白さが満載の本が、
子どもの“プログラミング的思考"をグングン伸ばす本
この本、おすすめですよ(^^)
だい
『昔仕事で、「申込書」「名簿」「許可書」に名簿の名前をいっぺんにうちこんで同時にプリントアウトする、
という高度なことを先輩がやってまして、(中略)あれはどういったプログラムだったのでしょう?』
多分こういう質問だろうと僕は解釈しました。
つまり、「別シートにある名簿から名前を取り込んで、その都度、印刷しては、次の名前を取り込む、
という繰り返しをプログラムで行う方法を教えてほしい」と。
解釈が違っていたら、また取り上げますので、ご連絡ください・・・
さて、以下のような発注書があるとします。
注目してほしいのは、A4(A列4行目)の数字です。この数字は、顧客Noなのです。
この数字に対応した顧客名がA6に読み込まれます。
実は、別シートに顧客名簿があるのです。ご覧いただきましょう。
さて、A6には、関数を設定してあります。
A4の値に対応した顧客名を名簿から参照する関数です。そうです、VLOOKUP関数ですね。
さて、さっそくコードを書いてみましょう。
ALT + F11 で、VisualBasicEditorを起動します。
「挿入」→「標準モジュール」をクリックします。
そこに、次のようにコードを記述してください。
Sub 連続印刷() Dim i As Integer Dim LastRow As Integer Worksheets("発注書").Select With Worksheets("名簿") LastRow = .Range("A65536").End(xlUp).Row For i = 2 To LastRow Range("A4").Value = .Range("A" & i).Value ActiveSheet.PrintPreview Next End With End Sub
一応、画像も掲載しておきます。
名簿の顧客が増えても全員印刷できるように、名簿の最終行は、プログラムで判断しています。
また、この段階では、実際に印刷するわけではなく、確認のために印刷プレビューするコードになっていますので、
ご了承ください。
それでは、実行してみましょう。
Excelに切り替えて、Excel2003までは、「ツール」→「マクロ」→「マクロ」とクリックします。
Excel2007は、Altキーを押しながらF8キーを押してください。
実行ボタンをクリックします。
プレビュー画面が表示されますね。
この画面を閉じると、即座に次の顧客名でプレビューされます。
うまくいってますね。
実際に連続印刷する場合は、
ActiveSheet.PrintPreview
を、以下のように変更します。
ActiveSheet.PrintOut
ただし、顧客の人数が多い場合には、若干注意が必要です。
というのも、プリンタによっては、対応できずにエラーになることがあるからです。
この場合、対応するコードを追加したほうが安全です。
このコードについては、改めてご紹介しますね。
VBAって奥が深いですね。
奥が深いと言えば、エクセルって色々な機能があって、使い方によってはまるで手品(マジック)のようになるんですよね。
VBAをからめると、さらにドッキリ度がアップします。親子のやり取りを通じて、そんなエクセルの面白さが満載の本が、
子どもの“プログラミング的思考"をグングン伸ばす本
この本、おすすめですよ(^^)
だい