- 締切済み
EXCELの変数について
セルに入力されているデータ名と同じ名前のフォルダがあった場合は、 フォルダ内の写真データをセルに合わせて貼り付ける方法を教えてください。 フォルダには複数枚(最大6枚)の写真データが入っていますが、ファイル名(jpg)がバラバラです。 《ファイルA》 A1=11、A2=13、A3=17・・・・ 《ファイルB》 A1にファイルAで指定された番号 CドライブのファイルAのA列と同じ番号のフォルダに複数枚写真(最大6枚)あります。 下記セルに順番に自動で貼り付ける。 (1)J28(2)M28(3)P28(4)J37(5)M37(6)P37 宜しくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
表題名が的外れ。文章で内容を説明せよ。それに丸投げ。 ほとんどWEB記事で解決する問題。過去にも似た質問は時々出た。 ーー 変数という種類の問題では無かろう。 フォルダの中のファイル(名)を、個々に捉えるのは、VBAの兄弟のVBscりptを勉強して利用せよ。 Googleで「vbscript フォルダ内のファイル一覧を取得する」で照会。 http://bayashita.com/p/entry/show/33 など。 'Option Explicit Sub test01() fn = CurDir MsgBox fn Dim objFileSys Dim objFolder Dim objFile Dim i 'ファイルシステムを扱うオブジェクトを作成 Set objFileSys = CreateObject("Scripting.FileSystemObject") 'c:\temp フォルダのオブジェクトを取得 Set objFolder = objFileSys.GetFolder(fn) 'FolderオブジェクトのFilesプロパティからFileオブジェクトを取得 i = 1 ' <--本例の特別 For Each objFile In objFolder.Files If i > 5 Then Exit For '<--本例の特別 '取得したファイルのファイル名を表示 MsgBox objFile.Name MsgBox objFileSys.GetExtensionName(objFile) i = i + 1 '<--本例の特別 Next Set objFolder = Nothing Set objFileSys = Nothing End Sub ーー 指定フォルダーの最初からファイルを5つに限定して(これ以上多いと表示例として、うるさいので)、ファイル名と拡張子を表示するプログラムに(WEBのコード例を)修正した。 これで指定フォルダー1つのファイル名と拡張子が納豆できるだろう。 その後IF文を使って、拡張子がJPG以外を処理しないようにする。 ファイル名フルパスがわかると、セルに画像を挿入するのは Googleで「エクセルVBA セルに画像を挿入」で照会せればコードは判る。 セルの位置に写真を置く(挿入する)のは セルA1に置く例。A1セルの大きさを見やすいように、適当に大きくしておくこと。 Sub test02() myfilename = "C:\Users\xxx\Pictures\P92411113.jpg" '私のテスト例を一部変更。質問者の実在分を指定のこと Set myShape = ActiveSheet.Shapes.AddPicture( _ Filename:=myfilename, _ LinkToFile:=True, _ SaveWithDocument:=False, _ Left:=Cells(1, 1).Left, _ Top:=Cells(1, 1).Top, _ Width:=Cells(1, 1).Width, _ Height:=Cells(1, 1).Height) End Sub 後半のコードtest02の部分を、Test01で、1つの画像ファイルが決まった(捉えられた行)コードのポイントに結合(Test02の)コードを挿入)すれば完成する。 画像を張り付けるセルの位置を、順次づらすため、Cells(1, 1).の1,1の部分を変化させるために、どうコード化するか考えればよい。 このように目的のために、必要な機能のSUB分割をできるようになれ。 画像の見てくれの位置がセルの左上隅位置と関連付けられただけということを理解せよ。
- aokii
- ベストアンサー率23% (5210/22062)