GUIのデザイン
今回作成するGUIはとても簡単で、ボタンとGcBarCodeコンポーネントだけです。処理のほとんどはコードで行います。

GcBarCodeコンポーネントについて
GcBarCodeコンポーネントについては、前回の記事「バーコード作成.NETアプリケーションを作る」を参照ください。
今回は、バーコード作成のデータに、数字だけではなくアルファベットも使えるように、Code39(FullAscii)を使います。このバーコードは、アルファベットもバーコード化するため、前回使用した「JAN13」よりも細かなバーの並びになります。

コードの作成
今回はExcelを使うので、Excel VBAの知識があると記事を理解しやすいと思いますが、Excel VBAについてあまり詳しくない方もいますので、その辺も少し解説していきます。このプログラムは次のように動作します。
- Excelを起動し、ワークシートに入力されているデータを取り出します。
- このデータをつなげて、GcBarCodeコンポーネントのValueプロパティに渡し、CreateBitmapメソッドを使用して、バーコード画像を作成します。
- この処理を「空白のセルに出会うまで」という条件で、Whileステートメントを使用してデータの数だけ繰り返します。
- 作成したすべてのバーコード画像を別のワークシートに貼り付けます。そして「通常使うプリンタ」に出力して印刷します。
- ブックを保存して閉じ、Excelを終了します。
メインの処理
最初に、ボタンのClickイベントハンドラで、全体の処理を作成します。データの読み込みとバーコードの印刷はそれぞれ、引数付きのSubプロシージャを作成し、呼び出して使うようにします。
まずはじめに、Excelへの参照設定を行います。ソリューションエクスプローラで、プロジェクト名の上でマウスの右ボタンを押し表示されるショートカットメニューから、「参照の追加」を選びます。そして、「.NET」タブページのコンポーネント名リストから、「Microsoft.Office.Interop.Excel」を選びます。バージョン11がExcel 2003、バージョン12がExcel 2007です。これで、Visual BasicのコードでExcelを操作できるようになります。
Excelへの参照は、オブジェクト構造の最上位に位置するオブジェクト「Microsoft.Office.Interop.Excel.Application」を作成し、これを使ってExcel内部のオブジェクトにアクセスしていきます。
Dim xl As New Microsoft.Office.Interop.Excel.Application()
もし、開発中にExcelの動作を見たいという場合は、ApplicationオブジェクトのVisibleプロパティをTrueにします。このプログラムでは、Excelは一切表示させずに、バックグラウンドの処理として利用します。
'xl.Visible = True
Excelのインスタンスが作成できたら、これを引数にして2つのSubプロシージャを実行させます。
read_data(xl) print_barcode(xl)
処理が終了したら、ブックを保存して閉じ、Excelそのものを終了させます。
xl.ActiveWorkbook.Save() xl.ActiveWorkbook.Close() xl.Quit()
データの読み込み処理
バーコード化するデータの読み込み処理を作成します。これは、独自のSubプロシージャ「read_data」を作って記述します。引数は1つで、Excelのインスタンスへの参照を指定します。
Sub read_data(ByVal xl As Microsoft.Office.Interop.Excel.Application)
バーコードのデータがあるブックを開くには、WorkbooksコレクションオブジェクトのOpenメソッドを使用します。引数は、開くブックのファイル名をフルパスで記述します。
xl.Workbooks.Open("C:\barcode\バーコードデータ.xls")
ブックを開いたら、ワークシート「Sheet1」にあるデータを読み込みます。サンプルブックには10件のデータが3列にわたって入力されています。このデータの読み込みは、Whileステートメントを使って自動化します。ループ処理の条件は、「空白のセルに出会うまで」です。
セルの参照には、Cellsプロパティを使用します。引数は、「行番号」と「列番号」です。ここでは、行番号に変数を使用し、1行ずつアクセスする行番号を変化させながら、データを順番に取り出していきます。
With xl.ActiveWorkbook.Worksheets("Sheet1") While .cells(i, 1).value <> "" icount += 1
そして、3つのセルデータを連結し、バーコード作成データに加工します。
data = .cells(i, 1).value & .cells(i, 2).value & .cells(i, 3).value
後は、前回の記事で紹介したように、GcBarCode1コンポーネントのValueプロパティに、このデータを設定します。バーコードのタイプは、アルファベットが使えるように、Typeプロパティに「Code39」を指定します。
With GcBarCode1 .Type = GrapeCity.Win.BarCode.ValueType.BarType.Code39 .Value = data End With
そして、CreateBitmapメソッドでバーコード画像を作成し保存します。
imgBarcode1 = GcBarCode1.CreateBitmap(120) fname = "C:\barcode\BarCode" & icount & ".bmp" imgBarcode1.Save(fname, System.Drawing.Imaging.ImageFormat.Bmp) i += 1 End While MessageBox.Show("バーコード" & icount & "個を作成しました。", "完了") End With End Sub
バーコードの印刷処理
バーコード画像ができたら、ワークシートSheet2に貼り付けて印刷します。
これは、Subプロシージャ「print_barcode」を作って記述します。引数は1つで、Excelのインスタンスへの参照を指定します。
Sub print_barcode(ByVal xl As Microsoft.Office.Interop.Excel.Application) Dim i As Integer
ブックは開いたままになっているので、今度はSheet2をアクティブにし、ここに作成したバーコード画像を貼り付けていきます。これには、PicturesオブジェクトのInsertメソッドを使用します。引数は、画像ファイル名をフルパスで指定します。全部で10個の画像を貼り付けますが、貼り付け位置がずれるように、IncrementTopプロパティを使用しています。
With xl.ActiveWorkbook.Worksheets("Sheet2") .Activate() .range("A1").Select() For i = 1 To 10 'icount .Pictures.Insert("C:\barcode\BarCode" & i & ".bmp").select() xl.Application.Selection.ShapeRange.IncrementTop(60 * (i - 1)) Next
貼り付けが完了したら、PrintOutメソッドを実行してワークシートを印刷します。このメソッドは、「標準で使用するプリンタ」に対して印刷処理を実行します。
.Printout() End With End Sub
以上でできあがりです。