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

【エクセルVBA】任意の画像フォルダから、画像を貼り付けしたいです。

下記、やりたい事のページを見つけたのですが、画像貼り付けが横に貼り付けられてしまいます…。

http://club-vba.tokyo/vba-folda-gazou/

縦(列)に貼り付け、画像名が記載されている場所に画像を貼り付けできるようにしたいです。
初心者のため、どなたかアドバイス頂けると嬉しいです。

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

  • fujillinさん、ご返信ありがとうございます。
    >縦一列に、折り返し無しで貼り付けたいです。
    例えばA列1行目~A列10行目に画像名が記載されているなら、
    同じようにA列1行目~A列10行目に画像を貼り付けたいです。

    ーーーーーーーーーーーーーーーーーーーーーーーー
    If k > 5 Then ''←折り返しの列はここを変える
    ーーーーーーーーーーーーーーーーーーーーーーーー

    ーーーーーーーーーーーーーーーーーーーーーーーー
    If k > 1 Then ''←折り返しの列はここを変える
    ーーーーーーーーーーーーーーーーーーーーーーーー
    に変えてみた所、縦に貼り付けはされたのですが、
    画像名が記載されていない個所にも画像が貼り付けられてしまいました。。

    No.3の回答に寄せられた補足コメントです。 補足日時:2021/10/18 14:46
  • 今知ったのですが、同じ画像名がある場合、2つ目以降には画像が貼り付けられないみたいです…。
    画像名が重複していても、全てに画像が貼り付けられるようにしたいです。

    「【エクセルVBA】任意の画像フォルダから」の補足画像2
      補足日時:2021/10/18 15:12

A 回答 (7件)

こんにちは。



詳しくは見ていませんが、

29行の、 Cells(j, k).Select が貼り付ける位置を指定していますね。
55行の、If k > 5 Then で、横に5つ並べている様です。
If k > 1 Then 5を1にすれば、取り敢えずは、縦に並ぶ様な気がします。
    • good
    • 0
この回答へのお礼

ありがとうございます。
取り敢えずは縦に貼り付けられました。

お礼日時:2021/10/18 15:06

>画像名が記載されている場所に画像を貼り付けできるように



どこに画像名があるのでしょう?
    • good
    • 0
この回答へのお礼

ご返信、ありがとうございます。
画像名はマクロ実行時、エクセルに記載した状態となります。

お礼日時:2021/10/18 14:29

こんにちは



>画像貼り付けが横に貼り付けられてしまいます…。
縦一列に貼り付けたいのでしょうか?(折り返し無し?)

ご提示のコードでは、変数jが行番号を、kが列番号を意味していて、貼り付け先のセル位置は「j行k列」になっています。
コードの最後の方に、次のセル位置を決めるために、kに1加え(列番号を増加)、5を超えたら次の行になるように制御している部分がありますので、そこをお好みの内容に変えれば宜しいでしょう。

単純に1列に並べたいのであれば、「画像を一括挿入する列数の変更方法」に説明があるように、k>1に変えればよいです。
(もっと単純に、j+1するだけですみますけれど・・・)
この回答への補足あり
    • good
    • 1
この回答へのお礼

ご返信ありがとうございます。
縦一列に折り返し無しで貼り付けたいです。

ーーーーーーーーーーーーーーーーーーーーーーーー
k = k + 1
If k > 5 Then ''←折り返しの列はここを変える
k = 1
j = j + 1
End If
ーーーーーーーーーーーーーーーーーーーーーーーー
↓ if k > 1Then へ変更
ーーーーーーーーーーーーーーーーーーーーーーーー
k = k + 1
If k > 1 Then ''←折り返しの列はここを変える
k = 1
j = j + 1
End If
ーーーーーーーーーーーーーーーーーーーーーーーー

こちらで実行したところ、画像名が記載されてない個所にも
画像が2つ貼り付けられてしまいました、、。

お礼日時:2021/10/18 14:57

No.1です。



>画像名はマクロ実行時、エクセルに記載した状態となります。

無論そうなのでしょうけど、
・A列に画像名( & 拡張子?)があってB列に貼り付けたい
・A列に画像名があってそのセルに貼り付けたい
のかどうかと、画像ファイルを保存しているフォルダはマクロを実行するBookが保存されているフォルダとどう言った位置関係なのか?
同じフォルダでは管理が大変でしょうから、Bookが保存されているフォルダより下層(例:abc)フォルダなのか、Bookとは関係ない場所なのかが情報として必要ではないかと初級レベルなジジィは感じました。
    • good
    • 0

No3です。



>やりたい事のページを見つけたのですが、
>画像貼り付けが横に貼り付けられてしまいます…。
もとのご質問がこの内容だったので、レイアウトだけの話かと思いましたけれど・・・

>画像名が記載されている場所に画像を貼り付けできるようにしたいです。
>同じ画像名がある場合、2つ目以降には画像が貼り付けられないみたいです…。
であるなら、ご提示のコードとなさりたいことの内容が同じというわけではありません。
それを参考にはできるでしょうけれど、なさりたいことに合った内容のものを、ゼロから作成した方が適切なものを早く得られると考えられます。
修正・変更していってもできないことはあいませんけれど、段々「わけのわからない」コードになっていきがちですので・・

そのためには、まず、ご自分がなさりたいことをきちんと整理することと、次に、それをどのように処理すれば良いかという手順を考えることが必要になってきます。

基本的に、プログラムは「やりたい内容」に合わせて作成するものであって、探して見つけるものではありません。
(まぁ、「汎用的な部品の流用」は、誰もがあたりまえに行っているでしょうけれど、それはあくまでも「部品」ですので。)
    • good
    • 1
この回答へのお礼

ありがとう

ご丁寧にありがとうございます。
知識不足のため、勉強してみますね。
お忙しい中、お答えいただきありがとうございました…!

お礼日時:2021/10/18 16:22

こんにちは


テストしているわけではないので、違っていたらごめんなさい。

同じ列で行を移動するのであれば、列方向を固定すれば良いですね

列番号の 変数 Kの値を決めているのは k = inp.Column のようです
その値を変えなければ良いので削除してよいのではないかと

End With

' k = k + 1
' If k > 5 Then ''←折り返しの列はここを変える
' k = 1
j = j + 1
' End If

Next i

不要なところと思われる部分を コメントアウトしています。

ループするごとに変数の値を変える部分

コメント(コードの無効)にした訳
列は移動しない  ' k = k + 1
従って折り返しはない ' If k > 5 Then ''←折り返しの列はここを変える
列移動しないので初期値にする必要はない  ' k = 1
行を+1する
If分岐処理の必要がないので 'End If

結果
繰り返し
単純に行方向をループごとに+1(下の行に)移動しています。
    • good
    • 1

#6です


リンク先をよく見ると
If k > 5 Then
k = 1
これ違うのではないかと、、B列選択だと、、

k = k + 1
If k > inp.Column + 5 Then ''←折り返しの列はここを変える
k = inp.Column
j = j + 1

これで 5 を1とすれば一列対応(A列以外から初めてもOK)
多分、、
    • good
    • 1
この回答へのお礼

ご丁寧にありがとうございます…!
>これで 5 を1とすれば一列対応(A列以外から初めてもOK)
⇒試してみたのですが、折り返しされてしまいました><

そもそも、画像名に対して貼り付けられる画像も違うみたいで…
(質問する前にもっと試せばよかったのですが…)
なのでもう少し探ってみようと思いますので
こちらの質問は一旦終了しようかと思います。
お忙しい中回答いただいたのに申し訳ありません。。

お礼日時:2021/10/18 20:15

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