EXCEL VBA バーコード入力

このQ&Aのポイント
  • EXCEL VBAにてバーコードによる入力を作成する方法について教えてください。
  • バーコード情報として仕入情報5桁、品番情報20桁、数量情報3桁を考慮し、テキストボックスに正しく入力できる方法を教えてください。
  • バーコードリーダで読み込まれた情報をテキストボックスに分割して表示し、次の読み込みに備える方法を教えてください。
回答を見る
  • ベストアンサー

EXCEL VBA バーコード入力

よろしくお願いします EXCEL(2013) VBAにてバーコードによる入力を作成しているのです。 バーコード情報例 2023○123456789-ECCW○○○○○○●●1 バーコード情報を仕入情報5桁 品番情報20桁 数量情報3桁 下記○●箇所は品番、数量情報桁数が変わる為ブランクで設定しています。 バーコードリーダで読込を行ったときに テキストボックス1にカーソルがあり テキストボックス1に 2023 テキストボックス2に 123456789-ECCW テキストボックス3に 1 以上が入力されて テキストボックス4にカーソルが移動して次の 読込が出来るようにしたいので 色々調べましたが検索ヒントが悪いのか 中々目的のやり方が見つかりません。 ご教示いただけますと助かりますので よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

手軽に結果を得るには CutStr() などの自作関数を利用されることです。 【イミディエイト】 ?CutStr("2023○123456789-ECCW○○○○○○●●1", "○", 1) 2023 ?CutStr("2023○123456789-ECCW○○○○○○●●1", "○", 2) 123456789-ECCW で、最初の2つは簡単に切り出せます。問題は、最後の数字です。それは、区切り文字列に”023○123456789-ECCW”を指示するとよいでしょう。具体的には、既に検索済みの仕入れ情報、品番情報から区切り文字列を生成して指示することになると思います。 【CutStr()の仕様】 CutStr(文字列, 区切り文字列, 切り出す番目) Public Function CutStr(ByVal Text As String, _             ByVal Separator As String, _             ByVal N As Integer) As String   Dim strDatas() As String      strDatas = Split("" & Separator & Text, Separator, , 0)   CutStr = strDatas(N * Abs(N <= UBound(strDatas))) End Function

77TAKETAKA
質問者

お礼

回答が遅くなりすみません。 思っていたことが出来ました。 右3文字はRaightで処理することでできました。 ありがとうございました。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

したいことがよくわからない。 バーコードリーダーでバーコードを読みこんだとき(ここまではバーコードリーダーのドライバーが受け持ち、余も混めの指令を、たぶんハードウエア(ボタンなど)から出し、読み取り、それを所定の文字コード化して、シートの所定のセルにセットしてくれるのだろ 参考 https://www.technical.jp/barcode/handbook2/chapter-2-1.html う)、そのつど、その情報を文字コード化した、文字列を捉えられる段階(変数)があり、プログラムにコントロール(制御)がわたり、プログラムで文字列を加工できる機会はないのか? (上記WEBの例ではシートのB列セルに、セットしてくれる。 在るならVBA・VBのMID関数で、切り出せば、そして各テキストボックスのTEXTプロパティにその部分文字列を代入すれば、しまいだ。 質問はそういう簡単なことではないのか。私が判ってないのか? 上記WEBの例ではシートのB列セルに、セットしてくれるが、それを確認か何かの目的で、分けて3か4個のテキストボックスに分けて表示したいのか。

77TAKETAKA
質問者

お礼

遅くなりすみません。 質問内容が不足してすみません。 テキストボックス2(品番)の一致によりラベル1に品名を表示して バーコード読込→仕入先30社程(TEXT1)ごとに注文書作成を振分け→ (TEXT2)、(Label1)、(Text3)の内容で注文ボタンクリック→ 各社毎にメールにて送信を行いたかったからです。 取りあえず目的は達成できました。 ありがとうございます。

関連するQ&A

  • VBAでPDFファイルのバーコードを取り出すには

    パソコンの中に多数のPDFファイルがあります。 各PDFファイル1つ1つにはバーコードが1つだけ入っていて、 このバーコードにある数字8桁を取り出したいのですが、 今は、(やり方が分からないので) PDFファイルを一度紙に印刷して、 印刷した紙のバーコードの部分を バーコードリーダーで読み取っているのですが、 PDFファイルを印刷せずに、 バーコードリーダーも使わずに、 パソコンの中だけで処理することはできないでしょうか。 例えば、 ExcelのVBAで、このPDFファイルを読み込んで、 バーコードにある数字8桁を取り出して、 ワークシートに入力していくような ことはできないでしょうか。 よろしくお願いします。(Windows10,Excel2016)

  • VBA の IF then 文につぃて

    access2000でテーブルに連結していないフォームがあり その中のテキストボックスにバーコードや磁気カードで読み込ませその桁数によって処理を分けようと思っていますが、どのようにコードを書けばよいのかおしえてください。 たとえば、 private sub() if 入力テキスボックス が 8桁 then 磁気カード処理 if 入力テキストボックスが 11桁 then バーコード処理 end if end sub public sub 磁気カード処理() public sub バーコード処理() のような形です。 どうかお願いします

  • EXCEL VBA のテキストボックスで

    EXCEL VBAのテキストボックスでボックス内にテキストを入力 しなければカーソルの移動が出来ないようにできますか? 宜しくお願いします。

  • バーコードによる入力を区別したい

    いつもお世話になっております。 blue-horse と申します。 画面上(テキストボックス上でなく)でバーコード入力を検出し、 その内容が定められた字数ならば、定めた処理を行うようにしたいと考えています。 具体的には、バーコード入力による画面遷移です。 例:001 -> 画面A、002 -> 画面B、... バーコードはCode39 スタート/ストップ文字は* body要素でkeypressイベントをキャッチし、スタート/ストップ文字を検出できるかと考えましたが、スタート/ストップ文字はバーコードリーダーが認識するために利用されるだけなので、PCには出力されないようで、いきなりバーコードの値から取得し始めてしまいました。 また、テキストボックスなどで上記の例と同様の入力内容が発生する可能性があるので、charCodeをプールして、特定パターンが発生したらバーコード入力と判断させようとすると、不具合が発生します。 このため、入力がキーボードからなのか、バーコードからなのかを認識することが出来ません。 入力デバイスの位置づけを考えれば当然と言えば当然な話なのですが、どうにかして実現したいと考えています。 何か良い方法、ライブラリ等は無いでしょうか。

  • Excelでバーコードコントロールを使用したい

    Excel2013でバーコードコントロール15.0を使用し セル(A4)に商品名15桁+数量4桁+シリアルNo.8桁(合計27文字)を Code128でバーコードにする必要があります。 例)A1【商品名】ABC01 A2【数量】1個 A3【シリアルNo.】00000001 B1【商品文字数】=LENB(A1) B2【数量桁数】=LENB(A2) B3【シリアル桁数】=LENB(A3) A4【バーコード内容】=A1&REPT(" ",15-B1)&REPT("0",4-B2)&A2&REPT("0",4-B3)&A3  希望の表示はA4のセルで   ABC01 000100000001 上記の空白部分、判り難いとは存じますが、10文字の空白です。 値としては表現できるようですが、バーコードコントロールの プロパティでLinkedCellをA4にしてもバーコードが生成されません。 そもそもの使い方が間違っているのでしょうか? スタートコード、チェックデジット、ストップコード等 http://www.kishugiken.co.jp/reading/barcode/barcode4.html ここで書いている事が、私には理解できずにいます。 ご教授下さいます様、お願い申し上げます。

  • VBでの入力値制限について

    はじめまして。 VBのテキストボックスに値を入力していき、ある桁数になるとメッセージを表示する仕組みを作りたいと考えています。 例えばVBで用意したテキストボックスにキーボードで123と入力しキーボードの4を押した直後に「桁数は3桁までです。」というメッセージを表示したいのですがいい方法を教えていただけないでしょうか? 自分で以下のように作ってみたのですがこれだとキーボードで123と入力し次に4を入力した時にテキストボックスに4が表示されてからエラーが出ます。そうではなく4をテキストボックスに表示させずに4をおしたら以下のメッセージが出るようにしたいのです。 よろしくお願い致します。 Private Sub text1_Change() If Len(text1.Text) > 3 Then MsgBox "桁数は3桁までです。", vbOKOnly + vbInformation, "情報" End If End Sub

  • エクセル VBA 日付入力?

    エクセル 2000のVBAにて簡単な 日程表を作成しています。 フォームの テキストボックス1に 10/8 を入力したら テキストボックス2には 10/15 ~ テキストボックス15には 1/21 が自動で 入力されるようにするには、どのようにすればよろしいでしょうか?

  • ExcelのVBAで桁数制限を設けたい

    続けてVBAの質問をさせていただきます。 例えばA1セルの桁数を半角で12桁と条件を設定しています。 ブランクであれば問題無しでよいのですが、値が入っている状態で 12桁未満または12桁以上を入力した場合にアラートを表示させるには どうすればよいでしょうか? If Worksheets("Sheet1").cells(1, 1).length <> 12 then msgbox "桁数が誤っています", vbOkOnly Exit Sub End If こんな感じで作ったもののうまくいきません。 一行目がおかしいようですがどう直せばいいでしょうか?

  • エクセルVBA読み込みアドレスの最後に「¶」

    エクセルVBA読み込みアドレスの最後に「¶」 エクセルVBAでテキストボックスに画像ファイルの読み込みをすると、アドレスの最後に「¶」が入力されてしまい、エラーとなってしまいました。「¶」を削除すると読み込む事が出来ましたが、読み込みの際に入力されない方法はありますか。(表示の際にテキストの左端一文字を削除すればよいのですが) 宜しくお願いします。

  • エクセルVBA テキストボックス処理?

    エクセル2000 VBAにて入力フォームの テキストボックス1に下記を書き込んだのですが カーソルがテキストボックス1にあるとき 他の処理(コマンドボタン、マウスにて他のテキストボックスに カーソルを移すなど)が出来ません。 フォームを閉じるときもメッセージボックスのコメントがでます。 どの処理を行ってもテキストボックス1の処理が終わってからしか 行わないようなのですが??? Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) Dim i As Integer '品番確認用 For i = 3 To 100 If Sheets("品番マスタ").Cells(i, 1) = TextBox1.Text Then Label1 = Sheets("品番マスタ").Cells(i, 2).Value 'メーカー Label2 = Sheets("品番マスタ").Cells(i, 3).Value 'タイプ Label3 = Sheets("品番マスタ").Cells(i, 4).Value '品名 Label4 = Sheets("品番マスタ").Cells(i, 5).Value '内容量 Label6 = Sheets("品番マスタ").Cells(i, 8).Value '背番号 Exit Sub End If Next i MsgBox "品番がありません" TextBox1 = "" Cancel = True End Sub どのように変更すればいいでしょうか?

専門家に質問してみよう