- ベストアンサー
VBAによる写真の貼り付け
- VBAを使用して、EXCEL2010上の特定のセルに名前を選択すると、対応する写真を表示したいと考えています。しかし、コードの一部でエラーが発生してしまいます。
- 問題のコードは他の方のものを参考にしており、該当の写真を削除してから指定のセルに貼り付ける処理を行っています。
- 原因はわかりませんが、エラーの箇所に問題がある可能性があります。他の部分も教えていただけると助かります。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
この手の質問ではエラー内容を記述するようにしましょう。 >myPath = "C:\Users\Users\DeskTop\PHOT" >myFile = myPath & Range("D3").Text & ".jpg" 原因は上記箇所にあります。 例えば、このmyPath(フォルダパス)で、D3に「TEST」と入力すれば myFileの中身は「C:\Users\Users\DeskTop\PHOTTEST.jpg」このようになります。 目的は「C:\Users\Users\DeskTop\PHOT\TEST.jpg」でしょうから以下の修正の何れかの方法で修正してください。 (注)(1)~(3)の全て行うのではなく3(+1)通りありますので、 何れかのお好きな方法で修正願います) (1)コードをそのままで使用する場合 D3セルのファイル名の先頭に「\」を付けて入力する。 上記例だと「\TEST」と入力してください。 (2)フォルダパスの最後に「\」を付けて設定する >myPath = "C:\Users\Users\DeskTop\PHOT" ↓ myPath = "C:\Users\Users\DeskTop\PHOT\" としてください。 (3)変数、セルの内容はそのままにコードで対応する(2通り) >myPath = "C:\Users\Users\DeskTop\PHOT" >myFile = myPath & Range("D3").Text & ".jpg" 上記コードの「間」に以下のコードを追加してください。 If Not myPath Like "*\" Then myPath = myPath & "\" または、 >myFile = myPath & Range("D3").Text & ".jpg" ↓ myFile = myPath & "\" & Range("D3").Text & ".jpg"
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17070)
>D3に於いて名前を選択できるようにしています どういうこと?選択はコンボやリストボックスを使うのではないか? たとえば、複数ファイルを候補として表示し、すなわちファイル名で先頭から「Picture」のものを表示して、1つを選ばせるとか?その際ある1のフオルダを決めること(簡単にするため、手作業ででも、集めること)。 ほかに拡張子が「.Jpg」のものらしいが。 >D3で名前選択時,該当する写真をA5:M29に表示したい。 写真は同時複数選択をありに、考えるのか? こんな、質問者に取って、適当かどうか判らんコードを載せるより、VBSCRIPTのフォルダ内のファイルを限定して探すプログラムをWEBで探せばよい。検索語は「VBSCRIPT フォルダ ファイル (を列挙)」でどうかな。「For Each Next」で探すのがコード的にやさしかろう。たくさんWEBにコード例があるよ。過去質問もたくさんあった。別方法としてDir関数でもできる。 この質問の例示コードを捨てて考えた方がよい。 セル1個に写真を1枚なら、一つのセルのLEFT,TOP、WIDTH、HEIGHTを、シートに写真挿入後変えたら(設定したら)よい。 ーー 読みなおすと、セルのChangeイベントでTargetでファイルを選択させているようだが、小手先にすぎると思う。Changeイベントの使い方はむつかしいと思う(初心者には範囲や取り消しなど手当てがむつかしい)。 自分だけが趣味で使うなら、どうしようが勝手だが。
お礼
ありがとうございました。無地解決しました
補足
ご回答いただき有難うございます。ご指摘通り修正しましたが PicturesクラスのInsertプロパティを取得出来ません(実行時エラー1004) ※ActiveSheet.Pictures.Insert(myFile).Selectにて停止してしまいます。 フォルダパス&ファイル名を確認しても間違い無いのですが