• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excelへの一括画像貼り付け)

Excelへの一括画像貼り付け

このQ&Aのポイント
  • Excelへの一括画像貼り付けについて、Windows XP Pro SP2とExcel 2007を使用していますが、マクロを試しても画像が正しく並んで貼り付けられない問題が発生しています。
  • 上記の方法以外でも、縦に順番に統一されたサイズで大量のjpg画像を一括でExcelに貼り付けるマクロを探しています。
  • ご存知の方がいらっしゃいましたら、教えていただけると助かります。よろしくお願いします。

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

  • ベストアンサー
  • xls88
  • ベストアンサー率56% (669/1189)
回答No.5

>次のように修正してマクロを実行したのですが、 >.ShapeRange.Width = ActiveCell.Resize(10).Width > >既存の1セルの横幅と同じサイズで画像が張り付けられました。 >なぜ横10セル分の横幅にならないのでしょうか? ヘルプからの抜粋ですが、Resizeプロパティの構文は 式.Resize(RowSize, ColumnSize) です。 ActiveCell.Resize(10).Width 上記は、RowSize(行数)を指定しています。 ColumnSize(列数)を省略した書き方になっています。 RowSize(行数)を省略し、ColumnSize(列数)を指定した書き方に直してください。 尚、省略した場合は元のサイズが適用されます。 あと上の方にある .ShapeRange.LockAspectRatio = msoTrue で、縦横比が固定されています。 従って、省略した方の画像サイズは、縦横比が適用され自動的に変更されます。

nao-k
質問者

お礼

ご回答ありがとうございます。 いろいろと教えてくださり感謝しております。

その他の回答 (4)

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.4

.ShapeRange.Height = 200 あるいは .ShapeRange.Height = ActiveCell.Resize(25).Height といった感じになります。 サイズに応じて、貼り付け先セルを調整する必要が出てきます。 ActiveCell.Offset(2, 0).Activate

nao-k
質問者

お礼

ご回答ありがとうございます。 教えてくださった点を修正して試してみました。 うまく貼り付けることができました。 ただ、さらに、試しに下記の部分を .ShapeRange.Height = ActiveCell.Resize(25).Height 次のように修正してマクロを実行したのですが、 .ShapeRange.Width = ActiveCell.Resize(10).Width 既存の1セルの横幅と同じサイズで画像が張り付けられました。 なぜ横10セル分の横幅にならないのでしょうか?

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.3

With pict   '.TopLeftCell = ActiveCell '(1)ここを止めて(2)(3)にする   .Top = ActiveCell.Top '(2)   .Left = ActiveCell.Left '(3)   .ShapeRange.LockAspectRatio = msoTrue   'どちらかをコメントアウト   .ShapeRange.Height = ActiveCell.Height 'セルの高さリサイズ   '.ShapeRange.Width = ActiveCell.Width 'セルの幅にリサイズ   ActiveCell.Offset(0, 1) = fName(i) 'ファイル名書込み End With

nao-k
質問者

お礼

アドバイスありがとうございます。 遅くなりましたが、試させていただきました。 教えてくださった点を修正することでエラーにならず、 また順番に並んでくれました。 確認ですが、セルのサイズに合わせることしかできない ものなのでしょうか? 例えば、画像の左上だけをセルに合わせて、 そのまま(もしくは任意)のサイズで画像をはりつけるのは難しいことなのでしょうか。

回答No.2

> 大量にあるjpg画像をExcelへ > ・順番に(?) > ・統一されたサイズで > ・一括で すべての行高が18Pic、列幅が72Picのシートを前提に、指定した ディレクトリの画像を、横4列で貼り付けます。 シートのA1に対象フォルダのフルパスを入力してから実行します。 Sub Album1()  Dim FPath, FName, R, C, i, H, W  Application.ScreenUpdating = False  FPath = Range("A1").Value & "\"  FName = Dir$(FPath & "*.*")  Do While FName <> ""   i = i + 1   R = 10 * Int((i - 1) / 4) + 3  '※1   C = 3 * ((i - 1) Mod 4) + 1   '※2   ActiveSheet.Cells(R, C).Select   ActiveSheet.Pictures.Insert(FPath & FName).Select   H = Selection.Height   W = Selection.Width   Selection.Height = 120     '※3   Selection.Width = 120 * W / H  '※3   FName = Dir$  Loop  Application.ScreenUpdating = True End Sub 縦1列のみの場合は、 ※1:R = 10 * (i - 1) + 3 ※2:削除 です。 ※3は写真のサイズを指定しています。 サイズを変更する場合は、貼り付けるセル位置(※1、※2)も 変更したほうがよいでしょう。

nao-k
質問者

お礼

ありがとうございます。 参考にさせていただきます。 #実験してみて、結果を連絡します。

nao-k
質問者

補足

実験させていただきました。 <状況> 教えてくださったコードをそもまま使いましたところ、 やはり同じ個所に画像が貼り付けられてしまい、 並んではくれませんでした。 また、「縦1列のみの場合」も試してみましたが、こちらは 「1:R = 10 * (i - 1) + 3」の次の行でエラーとなるようです。 (エラーになりデバッグ画面を開いたところ上記が示されました)

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.1

.TopLeftCell = ActiveCell のところですが、 PictのTopとLeftプロパティを、ActiveCellのTopとLeftプロパティにしてみてください。

nao-k
質問者

お礼

ありがとうございます。 参考にさせていただきます。

nao-k
質問者

補足

その後、まだ調べ中ですが、変え方がいまいち解りません・・・。