Excel
VBAによるバーコードオブジェクト

 Standard 以上

VBAを使ったバーコードの使用と自動化 Excel

ExcelではVisualBasic for Applications(VBA)を使って様々なことを解決することができます。 ここでは、VBAでActiveBarcodeコントロールを埋め込み、使用し、削除する方法を紹介します:

ActiveBarcode コントロールをシートに埋め込む:
この例では、バーコード・コントロールをセルの真上に配置する。そうすると、バーコードがセルの中にあるように見える。

まず、細胞のサイズを読み取る:

CurrentCell = "C3"
MyHeight = Range(CurrentCell).Height
MyWidth = Range(CurrentCell).Width
MyTop = Range(CurrentCell).Top
MyLeft = Range(CurrentCell).Left
セルにはバーコードが入る最小のサイズが必要です。セルが小さすぎるとサイズエラーが表示されます。そこで、セルの高さを30ピクセルにリサイズします:
' Enlarge the cell height to 30 pixels
Range(CurrentCell).RowHeight = 30
次の関数は、セルの真上にバーコード・コントロールを作成します:
ActiveSheet.OLEObjects.Add(ClassType:="ACTIVEBARCODE.BarcodeCtrl.1", Link:=False, _
 DisplayAsIcon:=False, Width:=MyWidth , Height:=MyHeight, Top:=MyTop + 2,_
 Left:=MyLeft + 4).Select
バーコードオブジェクトとセルを直接リンクすることができます:
ActiveSheet.OLEObjects(MyBarcode).LinkedCell = "B7"
コントロールに簡単にアクセスするために、変数MyBarcodeにコントロールの名前を格納します:
MyBarcode = ActiveSheet.Shapes(ActiveSheet.Shapes.Count).Name
これで、バーコード・オブジェクトのプロパティメソッドを好きなように使うことができる:
' set properties
ActiveSheet.OLEObjects(MyBarcode).Object.Font.Size = 8
ActiveSheet.OLEObjects(MyBarcode).Object.Type = 14 ' Code 128
ActiveSheet.OLEObjects(MyBarcode).Object.Text = Range("C3")
コントロールが不要になった場合は、シートから削除することができます:
ActiveSheet.OLEObjects(MyBarcode).Delete
ヒント: マクロ内でWindowsが今後のイベント(KeepWindowsAliveと呼ばれることが多い)を処理する必要がある場合、次のVBA関数を使用してこれを強制できます:
DoEvents
これは例えば、コントロールがそれ自身を新しく描画しなければならない場合などに必要となる。