ExcelのVBAを使って、バーコード、下記のようなデータを入れたら、
画面上にバーコードを表示、と同時に印刷をして、バーコードリーダーで
読み取ることを可能にしたいと考えております。
データ: 「123456789012」 12桁の数値
セルに12桁の数値を入れて、適当なボタンを押すと、数値の入ったセルの下方に
バーコード表示させる、といったイメージです。
PCには、Microsoft バーコードコントロール 14.0が入っておりました。
これを選択すると、マウスが+になり、シート上でクリックすると
確かにバーコードが現れるのですが、不明なデータです。
どこをどのように変えれば、データが変わるのかも、よくわかりません。
結局、「Microsoft バーコードコントロール 14.0」の使い方がわかっていないのです。
宜しく、ご教示願います。
No.6ベストアンサー
- 回答日時:
Sub macro1()
Dim o As OLEObject
With Cells(2, 1)
Set o = ActiveSheet.OLEObjects.Add(ClassType:="BARCODE.BarCodeCtrl.1", _
Link:=False, DisplayAsIcon:=False, _
Left:=.Left, Top:=.Top, Width:=.Width, Height:=.Height)
o.LinkedCell = .Offset(-1).Address
End With
End Sub
ありがとうございます。
うまくバーコードの表示ができるようになりました。感謝です。
うまくいかなかった原因
1.ステップ動作は、ActiveXcontrolの挿入には適さないことを理解していなかった
2.Dim o As Object ではなく、Dim o As OLEObjectであるべき
3.入力する数値の桁数が足りなかった。
デフォルトのJan-13は、12桁、13桁でないといけない。
試しに入力していたのは、3,4桁の数値の為、バーコード表示がなされ
なかったもの
調査の結果、code-128であれば英数でも、任意長データでもバーコード表示ができることがわかりました。
Jan 13は、数値、かつ12桁、13桁のみのデータを対象にしていることを
全く理解しておりませんでした。 ということで、かなり、ご迷惑をお掛けしました。
でも、ご親切に対応していただき、感謝します。
No.5
- 回答日時:
#1-4です。
> 実行時エラー438
> オブジェクトはこのプロパティまたはメソッドをサポートしていませんでした。
先のエラーとは全く別の原因です。
最初にも書きましたが、参照設定してください。
VBE画面のメニュー[ツール]→[参照設定]
→[参照可能なライブラリ]のリストの中から
□ Microsoft Access BarCode Control 14.0
にチェックを入れて[OK]ボタンで確定してください。
続けて
Dim o As Object
を
Dim o As BARCODELib.BarCodeCtrl
に書換えて下さい。
環境によっては参照設定してオブジェクトを明示する必要があるようです。
> フォームコントロールボタンにマクロを登録して、実行させました。
何故'ボタンにマクロを登録'なのですか?
すみません、なんか#2で私が書いたことを外して、そしてまた外して、
問題点を相対的で曖昧な方向に持っていくような対話の仕方では、
何処にも定点を置くことが出来ず、問題点を絞るのに余計な労力が掛かります。
誤解が誤解を生むような流れに陥り、サポートするのも難しいです。
> (Gooの使い方)
すみません、私は動画を上げたことないので解りません。
以上です。それでは失礼します。
No.4
- 回答日時:
#1-3です。
#3お礼欄への返答です。> 単純にF8でステップ動作だけです。
ぃゃ、[F8]などのステップ実行を含めた=[デバッグ]モード=[中断モード]
では、コントロールの挿入は最後まで実行されません。そういう仕様です。
それは、バーコードコントロールに限らず、Excelのバージョンにもよらず、
ActiveXコントロールの挿入処理に共通する仕様である
という話をしています。
説明が解り難いようで申し訳ありませんが、
#2の内容を今一度確認してみて貰えませんか?
私が書いているのは、例えば[F8]ではなくて[F5]な訳で、
とにもかくにも、ありのままそのまますべてを実行してみてください。
何が何でもステップ実行でコントロールの挿入をしたいというお話なら、
それはそもそも無理としか答えようがありませんので。
> 何が悪さをしているのか、分からない状態です。
ここまでの補足情報を見る限りでは、何も"悪さ"しているようにはみえません。
もし、ステップ実行でではなく、普通にマクロを実行しているのに、
それでも同様の状況に陥るならば、
#1の記述の各行(各ブロック)について、
一次的にコメントブロックしてからテストするなどして、
どの行が"悪さ"しているのかを特定してみて下さい。
以上です。
コメントありがとうございます。
フォームコントロールボタンにマクロを登録して、実行させました。
エラーメッセージは異なりますが、
実行時エラー438
オブジェクトはこのプロパティまたはメソッドをサポートしていません
でした。
パワポにこの過程を克明にスクリーンショットを取ってまとめました。
どのようにして、送付すればよいのか、分かりません(Gooの使い方)
Gooでの返答の仕方も、併せて、ご教示願えるとありがたいです。
No.3
- 回答日時:
#1,2です。
#2に追加です。もしかして、と思ったのですが、
用語として[中断モード]と[デザインモード]が同じものと認識されているようでしたら、
まったく別物です。
そんなことわかっている、ということでしたら以下は読む必要ありません。
もしかして、ですので。
[デザインモード]はコントロールの各種設定を編集する際に、
コントロールのクリックイベントを抑止したり、一時的に表示を切り替えて
手作業でのデザイン変更を可能にする為のもので、
VBE画面では、、[Sub/ユーザーフォームの実行]ボタン[中断]ボタン[リセット]ボタンの右
にある、三角定規みたいなアイコン[デザインモード]ボタンでON/OFFを切り替えます。
今回課題のバーコードコントロールの場合は、
[デザインモード]中にデザイン通りのバーコードコントロールを表示させることが出来ないので、
繰り返し三角定規みたいなアイコンを凸凹させて
[デザインモード]のON/OFFを切り替える必要があります。
既に述べた通り[中断モード]では、コントロール追加処理がエラー終了になりますし、
私が#1で書いていた内容には[中断モード]に関する記述は一切ありません。
でも、[中断モード]では実行しないように、と一言書いておいてもよかったですね。
以上です。
誠意あるご回答ありがとうございます。
デザインモード、了解しております。
単純にF8でステップ動作だけです。
環境はWindows8.1+Excel2010です。
真新しいBookでやっても、挙動は同じでした。
Win7+Excel2010でも、同じ。
XP+Excel2003でも、同じ(14ではなしに9でしたが)。
何が悪さをしているのか、分からない状態です。
No.2
- 回答日時:
#1です、補足欄拝見しました。
普通にすべて一発で実行すれば問題なく動作する筈なのですが、、、。
> 実行後、エラー表示が出ます。「中断モードでは、入力できません」。
そのエラー表示の意味は、
VBEコードペインから、デバッグモードで(中断しながら)実行する場合
は、エラーになりますよ、という意味で、バーコードコントロールに限らず、
すべてのActiveXコントロール追加コマンドに共通の仕様です。
#1で提示したマクロについては、
VBE画面からの実行なら、[Macro1]にカーソルを当てて、
[F5]キー、または、[Sub/ユーザーフォームの実行]ボタン
を、一押し、
Excel画面からの実行なら、
[Alt + F8]キーに続けて、[Macro1]を選択し、[実行]ボタン
という手順で、
要するに、実行中は手出しをせず、素直に最後までマクロを実行させること、
です。
無論、途中にブレークポイントやStopステートメント等の記述も
挟むことは出来ません。
> 終了させて、デザインモードで見てみると、確かにCell(2,1)にはObjectが
> 生成されています。透明のまま。
> マウスで大きさを変えると、バーコードが描写されました。
#1で書いた私の記述は、
コメントブロックした行(これはお好みの設定)を除いて、
それ以外すべて最後まで実行しないと、
バーコードコントロールは正しく設定されません。
処理を飛ばすか、途中で終了すれば、'透明のまま'になることがあっても、
それは、そういうものだ、としか言えません。
とにもかくにも、一度、ありのままのマクロをただ普通に実行してみてください。
動作確認ですから、基本すべて、デフォルトのまま、ありのまま、
例えばブックもシートも新しく作成したまま、という定点を作って、
その次に、実際に使用する環境に適応するか、という順番で確認してください。
> 現状、先に進めることができない状態です。
以上の返答を踏まえても尚お困りのことがあれば、相談してください。
とはいえ、「何をするか」は、こちらから示唆できる話ではないですから、
まずバーコードコントロールの機能を理解して、
バーコードコントロールを使って何が出来るのか理解出来ないと、
バーコードコントロールを使って何をするか決めることも出来ないと思います。
そういう意味では、#1に書いたように、まず手を動かして各プロパティへの
理解を深めることが肝要です。
#1には殆どのプロパティの扱い方を示したつもりです。
コメントブロックをすべて外して実行してみるのも、
参考になるのではないでしょうか。
補足への返答、以上です。
No.1
- 回答日時:
こんにちは。
何年か前は仕事でも使っていた時もあったのですが、
もう忘れていますし、前とは違うようですし、、、
なので、特に自信があるわけでもないですが。
バーコードコントロールを挿入したら、
そのまま、デザインモード(三角定規アイコンが凹んでる状態で)のまま、
バーコードコントロールを右クリックして、
添付画像にある2種類のプロパティページで設定を指定します。
大抵のことは、日本語環境でインストールしただけでの既定の設定で、
(例えばJAN-12とか)そのままいけるのですが、
具体的なコードを指定してバーコードを表示させるには、
[プロパティ]→[LinkedCell] の項目に、
参照したい12桁の数値が入力されたセル への参照
(例えば、「A1」のように)を入力します。
> バーコードリーダーで読み取る
のでしたら、
[Microsoft バーコードコントロール 14.0 オブジェクト]→[プロパティ]
→表示されたダイアログの[サブ スタイル] の項目で
[3 - Pos Case Code] を選択しておくと
読み取りがし易いです。
その他にどんな設定があるのかについては、
各プロパティページと以下に示すVBAコードでの説明とを
照らし合わせて把握できるようにしてみて下さい。
通常は、バーコードコントロールを配置するセル
の大きさを予め、バーコードのサイズで用意して、
ぴったり収めるようにするものですから、下準備、というか、
入力、設定、印刷までの流れを踏まえて、
まずは、シートのザインを済ませておきましょう。
> セルに12桁の数値を入れて、適当なボタンを押すと、数値の入ったセルの下方に
> バーコード表示させる、といったイメージです。
下に示すマクロは、コントロールの追加と基本設定に関する、
プロペティ・メソッドを紹介するサンプルです。
これを理解して貰えれば、応用は可能ですが、
もしも、具体的なマクロが欲しいということでしたら、
ボタンを押した時に
どこのセルに対応したコントロールを挿入するか
どのセルに合わせて配置するか、
等の最低限の情報がないと何も書けません。
例えば、
A1: 品名
A2: コード
A3: バーコードコントロール
のように3行1列を1品目として、
A1:H24 のセル範囲に、縦横8*8=64品目をレイアウト。
ActiveXコントロールのCommandButton1をクリックした時のマクロで、
上記64点のコードに対応したバーコードコントロールを
各コードのセルのひとつ下のセルに挿入したい
その際、コードへのリンクを設定し、サブスタイルをPOSコードにしたい
みたいな具体的な話があれば、着手します。
でも、後々のメンテを考えたら、ご自分で覚えながら書くのがベターです。
まずは手を動かして、
各プロパティを自分で掌握して設定出来るように慣れてください。
失敗したら消去して、を繰り返したとしても、
何かのトラブルの原因になることはないですから、、、。
> バーコードが現れるのですが、不明なデータです。
デフォルトでダミーのデータに基づいたバーコードを表示していますが、
リンクを設定してから、デザインモードを終了したタイミングで、
リンク先のデータが反映されるようになります。
また、何だか適当に弄っているうちに、
[Microsoft バーコードコントロール 14.0 オブジェクト]→[プロパティ]
→[データの確認] の項目
または
[プロパティ]→[Validation] の項目
に 0 以外が設定されて、バーコードが表示されなくなる場合には、
一旦、設定を 0 に戻してデザインモードを終了すれば、
正しく表示されるのを確認してから、もう一度設定し直すようにすれば
解り易いと思います。
要は、デザインモードでは、実際の表示を確認できないので、
何度もデザインモードを行ったり来たりする必要があるってことで、
そのことさえ解ってしまえば(多少面倒ですが)
今「不明」と感じていることも明るくなるのではないでしょうか。
尚、VBAを書く時は、
VBEの[ツール]→[参照設定]に
Microsoft Access BarCode Control 14.0
を追加しておいて、
Dim objBarCtrl As BARCODELib.BarCodeCtrl
のように宣言しておいた方が能率的に開発できると思います。
以下、サンプルです。
Sub Macro1()
Dim o As Object
With Cells(2, 1) ' セルを指定して
' ' セルの位置・サイズに合わせてバーコードコントロールを追加する例
Set o = ActiveSheet.OLEObjects.Add(ClassType:="BARCODE.BarCodeCtrl.1", _
Link:=False, DisplayAsIcon:=False, _
Left:=.Left, Top:=.Top, Width:=.Width, Height:=.Height).Object
End With
o.Style = 2 ' バーコードの種類、日本の12桁+1は、2を指定。8桁なら1
o.SubStyle = 3 ' 標準が1、POSコードが3
o.LinkedCell = "A1" ' セルへのリンク 普通にセル参照文字列を指定
' o.BackColor = RGB(255, 255, 204) ' 背景色 普通にRGBを指定
' o.ForeColor = RGB(0, 0, 80) ' バーの色 普通にRGBを指定
' o.LineWeight = 3 ' 線の太さ 0 - 7 の8段階(標準は3)
' o.ShowData = 1 ' 数字を 1表示する|0表示しない
' o.Direction = 0 ' コントロールの向きを回転 0 - 3 時計廻りに90°ずつ
Debug.Print o.Value ' 12桁分だけの値を取得(13桁めは普通、計算で求める)
o.Verb ' よく解らないけど、これで描画等の動作を確定?
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
10代と話して驚いたこと
先日10代の知り合いと話した際、フロッピーディスクの実物を見たことがない、と言われて驚きました。今後もこういうことが増えてくるのかと思うと不思議な気持ちです。
-
一回も披露したことのない豆知識
あなたの「一回も披露したことのない豆知識」を教えてください。 「そうなんだね」と「確かに披露する場所ないね」で評価します。
-
これ何て呼びますか Part2
あなたのお住いの地域で、これ、何て呼びますか?
-
ちょっと先の未来クイズ第4問
11月ごろに発表される、2024年の「新語・流行語大賞」にノミネートされる言葉を書けるだけ書いてください。
-
【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
【お題】 ・急に朝起こしてきた母親に言われた一言とは?
-
EXCELでバーコードを作成すると白くなってコードが見えません
その他(Microsoft Office)
-
バーコードコントロールが印刷時に反映されない
Excel(エクセル)
-
Accessでバーコードコントロール14.0が表示
その他(Microsoft Office)
-
-
4
マクロでバーコードのリンクセルを指定したい
Excel(エクセル)
-
5
EXECL バーコード生成でBarCodeCtrl のLinkedCellについて
Excel(エクセル)
-
6
エクセル バーコード作成で他のシートを参照するには?
Excel(エクセル)
-
7
コマンドボタンがデザインモードになったまま
Excel(エクセル)
-
8
バーコードが読み取れない原因について(エクセル)
その他(ビジネス・キャリア)
-
9
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
10
エクセルで作成したバーコードが印刷するとずれる
Windows Vista・XP
-
11
EXCELで作成したバーコードの更新方法について
Excel(エクセル)
-
12
連続で印刷すると画像が更新されない(Excelのイメージコントロール)
Visual Basic(VBA)
-
13
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
14
作成したQRコードを貼り付けたい
Excel(エクセル)
-
15
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
16
バーコードのサイズを小さくする方法
その他(ソフトウェア)
-
17
エクセルにMicrosoft Barcode Controlで全角文字を読ませる方法はありますか?
Excel(エクセル)
-
18
差し込み印刷のバーコードを小さくする方法
Word(ワード)
-
19
警告表示を非表示にしたい
Visual Basic(VBA)
-
20
Excel-VBAの「しばらくお待ちください」のダイアログが自動的に閉じない
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
読み取ったQRコード/バーコード...
-
EXCELでバーコードを作成すると...
-
バーコードってダブらない?
-
バーコードコントロールが印刷...
-
エクセル バーコード作成で他の...
-
バーコードを使って在庫管理をa...
-
Access2016Runtimeをインストー...
-
EXCELで作成したバーコードの更...
-
バーコードリーダー だけで E...
-
エクセルマクロでバーコードを...
-
四次元バーコード
-
テプラ PRO SR530 バーコード...
-
PayPay でバーコード支払いを行...
-
国内線航空券をJALのアプリにて...
-
ACCESSでNW-7バーコードの高さ...
-
黒い無地のバーコードのみのカ...
-
差し込み印刷のバーコードを小さく...
-
振込請求書が破れてしまいました
-
ケータイで読んだバーコードをP...
-
ANAの2次元バーコードがスマホ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
読み取ったQRコード/バーコード...
-
EXCELでバーコードを作成すると...
-
バーコードってダブらない?
-
バーコードコントロールが印刷...
-
エクセル バーコード作成で他の...
-
振込請求書が破れてしまいました
-
差し込み印刷のバーコードを小さく...
-
国内線航空券をJALのアプリにて...
-
レシートにバーコード
-
Excelでバーコードリーダーで読...
-
ANAの2次元バーコードがスマホ...
-
四次元バーコード
-
コンビニ決済の用紙で支払いの...
-
マクロでバーコードのリンクセ...
-
テプラ PRO SR530 バーコード...
-
EXCELで作成したバーコードの更...
-
バーコードリーダー だけで E...
-
バーコードの値段の付け方はど...
-
Access2016Runtimeをインストー...
-
ガラケー携帯(カメラ付き)で...
おすすめ情報
ありがとうございます。
スクリプトを試してみました。
With Cells(2, 1)
Set o = ActiveSheet.OLEObjects.Add(ClassType:="BARCODE.BarCodeCtrl.1", _
Link:=False, DisplayAsIcon:=False, _
Left:=.Left, Top:=.Top, Width:=.Width, Height:=.Height).Object
End With
実行後、エラー表示が出ます。「中断モードでは、入力できません」。
終了させて、デザインモードで見てみると、確かにCell(2,1)にはObjectが
生成されています。透明のまま。
マウスで大きさを変えると、バーコードが描写されました。
現状、先に進めることができない状態です。
サジェスチョンをお願い致します。