アプリ版:「スタンプのみでお礼する」機能のリリースについて

Excelのワークシート1に1枚の部品カンバンを作成しました。
そのカンバン1枚のデザインはA1からD6までの範囲で作成。
A1のセルには 1036000102 という値が入っています。
A1セルの中にQRコードを配置し、QRコードはプロパティのLinkedCell欄をA1に設定しています。
D1セルにはシリアル№として 1 という値が入っています。
このカンバンをすぐ右に(2枚目はE1からH6、3枚目はI1からL6・・・となるように)120枚になるまでコピーしていきたいのですが、その際左上の 1036000102 という値を 1036000202 1036000302 というように3桁目を1づつ増やしたいです。最後は 1036012002 としたく。QRコードの
LinkedCellはE1、I1といった様にその値のセルになる様に。
又、D1のシリアル№も2、3、4、、、120となる様にVBAでどうにかなりませんか?
ご親切な方ご教示頂けないでしょうか?
よろしくお願い致します。

質問者からの補足コメント

  • 御回答ありがとうございます!
    写真の感じであっています。
    実際のものは今撮れないので簡単に作成しました。
    QRと文字で書いてある部分は本当はQRコードです。
    よろしくお願いします!

    「Excel VBAで セル内の値を1づつ」の補足画像1
    No.2の回答に寄せられた補足コメントです。 補足日時:2022/02/28 19:52
  • おはようございます。
    今頂きましたマクロを実行したのですが、カンバンが64枚まで作られたところで
    アプリケーション定義またはオブジェクト定義のエラーです
    となってしまいました。
    頂いたままコピーしたので誤字等は無いと思うのですが。

    No.3の回答に寄せられた補足コメントです。 補足日時:2022/03/02 06:18
  • HAPPY

    ありがとうございました!
    65〜120まではエラーになる事なく出来ました。
    長々とありがとうございました!
    本当に感謝致します。

    No.9の回答に寄せられた補足コメントです。 補足日時:2022/03/07 21:26

A 回答 (9件)

A1:D6には添付図のように設定を行ってください。


以下のマクロで66~120を生成します。

Sub QRCode作成65_120()
Dim wcol As Long
Dim wrow As Long
Dim ws As Worksheet
Set ws = ActiveSheet
Dim i As Long
Dim wrg As String
Dim xObjOLE As OLEObject
Dim xObjOLEorg As OLEObject
Set xObjOLEorg = ws.OLEObjects(1)
Application.ScreenUpdating = False

For i = 66 To 120
wcol = (i - 65) * 4 + 1
wrow = 1
ws.Cells(1, wcol + 0).ColumnWidth = ws.Cells(1, 1).ColumnWidth
ws.Cells(1, wcol + 1).ColumnWidth = ws.Cells(1, 2).ColumnWidth
ws.Cells(1, wcol + 2).ColumnWidth = ws.Cells(1, 3).ColumnWidth
ws.Cells(1, wcol + 3).ColumnWidth = ws.Cells(1, 4).ColumnWidth
wrg = ws.Cells(1, wcol).Address(False, False)
ws.Range("A1:D6").Copy Destination:=ws.Range(wrg)
ws.Cells(1, wcol + 0).Value = ws.Cells(1, 1).Value + (i - 65) * 100
ws.Cells(1, wcol + 3).Value = i
Set xObjOLE = ws.OLEObjects.Add("BARCODE.BarCodeCtrl.1")
xObjOLE.Object.Style = 11
With xObjOLE
.LinkedCell = ws.Cells(1, wcol).Address(False, False)
.Height = xObjOLEorg.Height
.Width = xObjOLEorg.Width
.Top = xObjOLEorg.Top
.Left = ws.Cells(1, wcol + 0).Left + xObjOLEorg.Left
End With
Next
Application.ScreenUpdating = True
MsgBox ("完了")
End Sub
「Excel VBAで セル内の値を1づつ」の回答画像9
この回答への補足あり
    • good
    • 1
この回答へのお礼

御回答ありがとうございます!
本日は残念ながら確認できません。
早くて明日の夜確認出来ると思いますので、またご連絡いたします。
ありがとうございます!

お礼日時:2022/03/06 07:53

>今考えているのですが、頂いたコードで作成出来た64枚目を別のワークシートに貼り付けもう一度同じ作業を行えばとりあえずはやりたい事は出来るのかなと。



以下のようなことでしょうか。

現在、1~64までは、作成できることはわかっているので、
今回、現在のシートの1~64までを採用し、別のシートに
65~120を作ることは、可能かと思います。
65がA1:D6のセルになり、その右側に66を作ります。
そのようにして、120まで作ります。
A1:D6のセルは、あなたの責任でQRコードと文字を設定します。
マクロで、65~120の分を作成します。
上記で良ければ、マクロの提供は可能です。


>やはりそのbookを見て頂かないとわからないですかね。
こちらで、エラーが再現できないと対処のしようがないです。
ちなみに、「実行時エラー1004 アプリケーション定義またはオブジェクト定義のエラー」となったとき、ほかにエラー番号のようなものは出力されませんでしたか。また、マクロのどの行で止まったかは、わかりますでしょうか。
上記のエラー番号等を手掛かりに、ネットを検索すると、もしかしたら、対処の方法がわかるかもしれません。
(わからない可能性が高いですが・・・)
    • good
    • 1
この回答へのお礼

ありがとうございます!
実行時エラー1004 アプリケーション定義またはオブジェクト定義のエラー
意外には何も出ておらず、シートは64枚目まで完了しそれ以上でも以下でもありません。
どの行か、と言うのは判りません、すいません。
おっしゃる通りで、別シートで65〜120まで作れるのかなと思います。
もしよろしければ上記の内容でご教示頂けないでしょうか。

お礼日時:2022/03/05 19:28

No6の追伸です。


ファイルをアップする際、
①QRコードが1個のシート(マクロ実行前のシート)
②マクロを実行してエラーになったシート
の2シートを載せてください。
特に①は必須になります。
    • good
    • 1
この回答へのお礼

申し訳ございません。
会社からデータ持ち出せませんでした、、、。
今考えているのですが、頂いたコードで作成出来た64枚目を別のワークシートに貼り付けもう一度同じ作業を行えばとりあえずはやりたい事は出来るのかなと。
すっきりしないですが、長々とお付き合い頂いている上、会社データを提示出来ない申し訳なさとで。
会社OSはwindows10 バージョン20H2
Microsoft Office Professional Plus 2016 32ビット
です。
やはりそのbookを見て頂かないとわからないですかね。
お付き合い頂けるのであれば、何とか最後まで行きたいのですが、、、。

お礼日時:2022/03/05 16:49

For i = 65 To 120がだめだった場合です。


ファイルのアップロードはOKと理解しました。
以下の手順で行ってください。

1.下記の無料のオンラインストレージサイトで行ってください。
(会員登録をしなくてもアップ可能です)

https://firestorage.jp/

2.上記のサイトに、excelをアップしてください。

3.アップする前にexcelファイルの個人情報をすべて削除してください。
添付図のように、excelファイルを選択し、右クリックし、「プロパティ」を選択します。
プロパティの画面が表示されるので、「詳細」タブをクリックすると、「プロパティや個人情報を削除」
のガイドが表示されるので(赤線で囲んだところ)、それをクリックします。
あとは、表示されるメッセージに従って削除してください。

4.こちらのサンプルを上記のサイトアップしました。
パスワード:goo
7日間保存されます。
https://firestorage.jp/download/e206176916e3092e …
にアップしてあります。ダウンロードしてみてください。
「Excel VBAで セル内の値を1づつ」の回答画像6
    • good
    • 1
この回答へのお礼

おはようございます。
For i = 65 To 120 でダメでした。
実行時エラー1004
アプリケーション定義またはオブジェクト定義のエラーとなってしまいました。
アップロードの件ですが、会社からこのファイルを持ちだせるかなぁと思っていたのですが、厳しいかもです。
なんとか持ち出せる様努力してみます。
速報までに。

お礼日時:2022/03/03 06:16

>家のPCはwindows8.1 excelは2013home and business 64ビットです。


>このバージョンではQRは作成出来ないんですかね、、、。

excel2016以上でないとQRコードは作成できません。あきらめてください。

>明日For i = 65 To 120 を入れてみて確認してます。
これで、OKなら問題ないですが、ダメだった場合の対策です。
このエラーをこちらでは、再現できないので、こちらではそれ以上はできません。したがって、以下の案は可能ですか。

案:
エラーが発生する、そのブックをどこかの公開されているサイトにアップする。(当然、会社情報がある場合は適度に○○などの伏字にします)
そのブックを私がダウンロードし、こちらで動作確認する。
    • good
    • 1
この回答へのお礼

ありがとうございます!
本来であれば今すぐにでもbookごと見てもらいたいのですが
そのアップするっていうやり方がまずわからないです。。。
でもひとまずFor i = 65 To 120を試してみます!
ご親切にありがとうございます!

お礼日時:2022/03/02 18:56

本件のエラーは、環境の違いによる可能性が高いです。



1.もし、実行されたのが家のPCでなら、会社のPCで実行して、その結果をお知らせください。(投稿時間をみると自宅から投稿したように思われます)。実行したのが、会社のPCなら、この回答は無視して項番2へ進んでください。

2.64枚までできているということは、IS1のセルに正しくQRコードが設定されていると理解しました。
もし、IW1のセルにQRコードの残骸があるならそれをまず削除してください。削除したのち、
マクロの
For i = 2 To 120

For i = 65 To 120
に変えてください。
そうすれば、65枚目から作り直します。
なお、65枚目の残骸がのこった状態でじっこうすると、2つQRコードが
つくられるので、かならず、残骸を削除してから実行してください。

3.参考までに、実行したPCの環境を教えていただけませんでしょうか。
ちなみに、こちらの環境ですが、
①OSはWindows10 Pro. 64ビット版
②ExcelはOfiice Home and Business 2019の 32ビット版
です。
    • good
    • 1
この回答へのお礼

ありがとうございます!
実行したのは会社のPCです。
家のPCで実行したいのですが、古すぎるのかQRコードが作成できません。
家のPCはwindows8.1 excelは2013home and business 64ビットです。
このバージョンではQRは作成出来ないんですかね、、、。
家で動作確認出来たら良いのですが。
実行しました会社PCのバージョンは明日確認致します。
IW1にはQRは無かった様に思います、明日For i = 65 To 120 を入れてみて確認してます。

お礼日時:2022/03/02 17:15

以下のマクロを標準モジュールに登録してください。


表示されているシートが実行対象になります。
一発勝負なので、実行前に当該シートのバックアップをとってから行ってください。(もしくは当該ブックのバックアップ)

Option Explicit
Sub QRCode作成120()
Dim wcol As Long
Dim wrow As Long
Dim ws As Worksheet
Set ws = ActiveSheet
Dim i As Long
Dim wrg As String
Dim xObjOLE As OLEObject
Dim xObjOLEorg As OLEObject
Set xObjOLEorg = ws.OLEObjects(1)
Application.ScreenUpdating = False

For i = 2 To 120
wcol = (i - 1) * 4 + 1
wrow = 1
ws.Cells(1, wcol + 0).ColumnWidth = ws.Cells(1, 1).ColumnWidth
ws.Cells(1, wcol + 1).ColumnWidth = ws.Cells(1, 2).ColumnWidth
ws.Cells(1, wcol + 2).ColumnWidth = ws.Cells(1, 3).ColumnWidth
ws.Cells(1, wcol + 3).ColumnWidth = ws.Cells(1, 4).ColumnWidth
wrg = ws.Cells(1, wcol).Address(False, False)
ws.Range("A1:D6").Copy Destination:=ws.Range(wrg)
ws.Cells(1, wcol + 0).Value = ws.Cells(1, 1).Value + (i - 1) * 100
ws.Cells(1, wcol + 3).Value = i
Set xObjOLE = ws.OLEObjects.Add("BARCODE.BarCodeCtrl.1")
xObjOLE.Object.Style = 11
With xObjOLE
.LinkedCell = ws.Cells(1, wcol).Address(False, False)
.Height = xObjOLEorg.Height
.Width = xObjOLEorg.Width
.Top = xObjOLEorg.Top
.Left = ws.Cells(1, wcol + 0).Left + xObjOLEorg.Left
End With
Next
Application.ScreenUpdating = True
MsgBox ("完了")
End Sub
この回答への補足あり
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます!
今すぐ実行したいのですが、別件で少し忙しくしておりまして。
今週中にトライし、結果報告致します!!
ありがとうございます!

お礼日時:2022/03/01 17:02

補足ありがとうございました。


添付図のような感じでしょうか。
写メの結果を待ってから、マクロを提示したいと思います。
「Excel VBAで セル内の値を1づつ」の回答画像2
この回答への補足あり
    • good
    • 1

補足要求です。


①A1のセルにQRコードを配置すると、その値(1036000102)がA1にありますが、
その1036000102の値は、QRコードと一緒にみえるようにしておく必要があるかと思います。
その為には、そのA1のセルの縦位置の配置を上詰めにしておく必要がありますが、あなたのもそのようになっていますか。それとも、それ以外の方法で、文字も見えるようにしているのでしょうか。その場合は、その方法も補足してください。
セルの縦位置の配置の上詰めについては添付図の赤線で囲んだボタンをクリックします。


②B,C,D列についても、セルの配置を変えていますか。それとも、そのままですか。

③A列の幅は、大きくなっているので、あなたが作成した、A,B,C,D列の幅を基準にして、それを
ほかの列(E,F,G,H列  I,J,K,L列・・・)にも適用します。それでよろしいでしょうか。

④「カンバン1枚のデザインはA1からD6までの範囲で作成」ということですが、
2行目から6行目については、マクロでは関知しませんが、それでよいでしょうか。
A2~RL6のセルはあなたが、設定する箇所で、マクロでは何の設定もしないという意味です。

⑤念のため、祖語のないようにするために、A1~D6のセルの画像を提示していただけませんでしょうか。
画像が、アクセサリのSnipping Toolを使用すると簡単に画面から切り取りができます。
添付の画像もSnipping Toolを使用しています。
「Excel VBAで セル内の値を1づつ」の回答画像1
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます!
①A1のセルの数値はセル内の下に配置しています。そこでQRコードは
大きさを調整し、QRコードの下に数値が見える様になっています。
②B1とC1は結合しています。D1は中段、右寄せです。
③幅はA1からD6までに作ったままでコピーしていきたいです。
④一度やってみないとわからないですが、このA1からD6までを一通りコピーした後に、VBAでA1とD1の数値を操作すれば良いのかなと思います。
⑤すいません。データが持ち出せなくお見せする事ができません。
写メを明日撮ってきます。
こんな補足で大丈夫でしょうか?
ほかにも必要な情報がございましたら、なんなりとお申し付け下さい。

お礼日時:2022/02/28 17:59

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!