Excel (VBA)

Excel VBAに関するフォーラムです。
  • 掲示板への投稿には会員登録(無料)が必要です。会員登録がまだの方はこちら
  • 掲示板ご利用上のお願い」に反するご記入はご遠慮ください。
  • Q&A掲示板の使い方はこちらをご覧ください
トピックに返信
質問

 
(Windows 10全般 : Excel 2016)
QRコードの作成マクロ
投稿日時: 20/07/16 00:11:02
投稿者: QR

 ExcelマクロでQRコードを連続作成しようと考えております。
Excelのファイルは全部で4つ。担当地区ごとに分けてはいますが、内容はすべて一緒。QRコードの数は全部で4000ほど作成する必要があり手入力では厳しい状況です。
Excelファイルに関してQRコードのもとになるURLはC2セルを始点としてC列に入力されています。
QRコードはその横のD2セルから下に作成したいです。
以下のコードはとあるサイトをもとにしたもので、自宅のパソコン(Excel2019)で使ったときは何の問題もなく動きQRコードもすぐに作れました。
 
Sub CreateQrcode()
 
    '最終行の取得
    Dim lastRow As Long: lastRow = Cells(Rows.Count, 1).End(xlUp).Row
 
    'lastRowまで繰り返し(途中エラーが出た場合も止めずに最後まで処理)
  Application.ScreenUpdating = False
    On Error Resume Next
        For i = 2 To lastRow
 
            'QRコード表示セルの高さなどを調整
            With Cells(i, "D")
                .RowHeight = 65
                .VerticalAlignment = xlTop '上詰め
            End With
 
            'GoogleAPIでQRコードを作成
            Set qr = ActiveSheet.Pictures _
                    .Insert("http://chart.apis.google.com/chart?cht=qr&chs=80x80&chl=" _
                            & Cells(i, "C").Value)
 
            'QRコードの表示位置を指定
            With qr
                .Top = Cells(i, "D").Top + 2
                .Left = Cells(i, "D").Left + 2
            End With
        Next i
        Application.ScreenUpdating = True
    On Error GoTo 0
End Sub
 
ただ、勤務先のパソコン(Excel2013か2016)ではqrが空値(Empty値)となり、QRコードが作成されずD列セルがすべて空白で出力されます。
勤務先のパソコンはインターネット分離(Web分離)となっており、もしかしたらgoogle chart apiがそれで上手く機能しないのかとも思っております。
大変お手数ですが、何かアドバイスなどあれば非常に助かります。

回答
投稿日時: 20/07/16 09:25:15
投稿者: takesi
回答
投稿日時: 20/07/16 11:22:04
投稿者: hatch315
メールを送信

'最終行の取得
 Dim lastRow As Long: lastRow = Cells(Rows.Count, 1).End(xlUp).Row
                                                 ↓
 Dim lastRow As Long: lastRow = Cells(Rows.Count, 3).End(xlUp).Row

回答
投稿日時: 20/07/16 13:54:00
投稿者: WinArrow
投稿者のウェブサイトに移動

>勤務先のパソコンはインターネット分離(Web分離)
インターネットには接続できない
ってことですか?
 
インターネットには接続できない環境で、
http://
は、無理でしょうね・・・・
 
ローカルで対応する方法としては、
Accessに同梱のAPIを使う方法があります。
 
ちなみに
私は、フリーソフト(コマンドライン起動)を使っています。
 

投稿日時: 20/07/16 18:30:01
投稿者: QR

コメントありがとうございます。
やはりインターネット分離が障害のような感じですかね。
申し訳ありません。当方自治体勤務でフリーソフトの類は厳しく禁じられております。
 
AccessのレポートからQRコード作成が一番早いでしょうか。

回答
投稿日時: 20/07/17 10:36:26
投稿者: Suzu

Microsoft BarCode Control を使ってはどうでしょう。
 
1.適当なシートを作成
2.開発タブ から(開発タブがリボンに表示されていなければ表示してください)
3.「挿入」 - ActiveXの右下 「コントロールの選択」 - 「Microsoft BarCode Control x.x」 OK
4. カーソルが 【+】になりますので、Shiftを押しながらマウスを動かし
   配置したい大きさのバーコードを配置
5.デザインモードに変わった事、配置したコントロールにフォーカスがある事を確認の上
   開発タブの「プロパティー」
6.バーコードコントロールのプロパティーが表示されますので
   オブジェクト名 を 控えておき (※1)
   Style を 「2」→「11」へ変更 Value に「http://www.moug.net」にし、適当なセルを選択
   QRコードが変わる事を確認。
 
ここで入れているのは、あくまでもコントロールなので、
4000個コントロールを配置すると、ファイルが重くなる可能性もあります。
 
コントロールは1個配置し、渡す値を変え、QRコードが変わったら
バーコードコントロールをコピーし、画像として貼り付けが良いかなと思います。
 
 
 
配置したバーコードコントロールを参照し、値を yahoo に変え、バーコードを更新した上で
画像としてコピーし、貼り付けた上で、画像ファイルを A1に配置するサンプルです
 
>========================================================
Dim obj As BarCodeCtrl
 
Set obj = ActiveSheet.OLEObjects("BarCodeCtrl1").Object
 
obj.Value = "http://www.yahoo.co.jp"
obj.Refresh
 
obj.CopyPicture
 
ActiveSheet.Paste
Selection.Top = 0
Selection.Left = 0
>========================================================
 
順に セルの値をバーコードに渡し、配置しなおす部分はご自身でどうぞ。

トピックに返信