• ベストアンサー

エクセルのマクロで

こんにちは、お願いします。 エクセルに画像の添付でマクロを使用したいのですが、 下記のようなマクロ作成・編集ができるのでしょうか? エクセルの特定のセルに画像のファイル名を入力しマクロを実行すると、他のフォルダにある.jpg画像が指定したセル位置に添付される。 また、添付位置を複数にもできますか? 説明がわかるでしょうか…?^_^; マクロに関して全く無知なのですが、できるものでしたら是非教えてください。 宜しくお願いします。

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

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.3

下記のように修正してみて下さい。 操作方法は、   セルB8のみに貼り付ける場合は、    セルB8を選択した状態で下記マクロを実行します。   セルB8、B10、B12に貼り付ける場合は、    セルB8を選択し、    Ctrlキーを押しながらB10を選択    Ctrlキーを押しながらB12を選択 し、    セル3個を選択した状態で下記マクロを実行します。C2のファイル名には拡張子はないものとしています。 Sub pictureSet()   Dim jpgRg As String     jpgRg = "C2"   Dim myFolder As String     myFolder = "D:\mmm\清水\略図\"   Dim jpgFilename As String 'jpgファイルのフルパス   jpgFilename = myFolder & ActiveSheet.Range(jpgRg) & ".jpg"   '指定したセルにjpgファイルを貼り付ける   Dim rg As Range '挿入する個々のセル   For Each rg In Selection     rg.Select     ActiveSheet.Pictures.Insert(jpgFilename).Select   Next   ActiveSheet.Range(jpgRg).Select End Sub

moonhare
質問者

お礼

回答ありがとうございました! ヽ(^o^)丿出ました!出ました!画像!! って、ぜーんぶ作って頂いてるのですが…嬉しいです。 この喜びを忘れずに、少しでも自分の力で作れるようになりたいです~(と、今は思っています…) ありがとうございましたm(__)m また、宜しくお願いします!

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.4

なさりたいことは、下記で行うような事なのではと思いました。 VBEの画面にModule1を挿入し下記コーディングを行ってください。セルA1~E1に画像ファイルのフルパス表現が入っているとして、 それらの画像をA2からE2にセットする。5セルの例です。 下記では、時間が無くて、画像ファイルを1つしか探せなかったので 1つの同じ画像を5箇所に貼りつけています。 Sub Test01() Worksheets("sheet2").Cells(1, 1) = "C:\My Documents\My Pictures\0009_640.jpg" '本来は Worksheets("sheet2").Cells(1, 2)="....."が5個続く。 ’またはA1からE1セルに入力しておく。  For i = 1 To 5 l = Worksheets("sheet2").Cells(2, i).Left t = Worksheets("sheet2").Cells(2, i).Top h = Worksheets("sheet2").Cells(2, i).Height w = Worksheets("sheet2").Cells(2, i).Width pic = Worksheets("sheet2").Cells(1, 1)   ’本来はpic = Worksheets("sheet2").Cells(1, i) Worksheets("sheet2").Shapes.AddPicture pic, msoFalse, msoTrue, l, t, w, h Next i Range("b8").Select ’どのセルでも良い End Sub (強制改行されている個所にご注意下さい) 残念ながら素直に画像が出る時と出ないときがありますが、クリックなどしていると現われます。これの解決法や原因がわかりませんが、取りあえず発表させて頂きます。悪しからず。

moonhare
質問者

お礼

回答ありがとうございました。 今回、実践としては使わせて頂かなかったのですが ご回答頂いたものを無かったものとせず、今後、いろいろためしていく参考にしたいと思っています。 少しでも”無”から脱出するように…^_^; また、宜しくお願いします。

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.2

>エクセルの特定のセルに画像のファイル名を入力し    B2セルにしてみました。    ファイル名にドライブ名やフォルダ名はある? >他のフォルダにあるjpg画像が指定したセル位置に添付される。    他のフォルダ名をVBAコード内に入れましたが、ファイル名にフルパス名をセットすれば    フォルダを指定する必要はありません。 >また、添付位置を複数にもできますか。    1つのjpgファイルを複数セルに貼り付けるのか、複数のjpgファイルを貼り付けるのか    不明ですが、どちらもできるようにしてあります。 処理の例と思って下さい。jpgファイル名をセットするセル番地、フォルダ名は、ご自分の環境に合うよう修正して下さい。 ご参考に。 ツール→マクロ→Visual Basic Editor でVBE画面に移り、挿入→標準モジュールで標準モジュールを挿入し、そのコードウインドウに下記コードをコピーして貼り付けます。 ここから ↓ Sub pictureSet()   Dim jpgRg As String '*** jpgファイル名をセットしたセル(自分で決めて下さい)     jpgRg = "B2"   Dim myFolder As String '*** jpgファイルがあるフォルダ(自分で決めて下さい)     myFolder = "A:\Test\"     'シートに入力されたjpgファイル名がフルパス(ドライブ名やフォルダ名を含む)なら、     '  myFolder = ""     'として下さい。   Dim jpgFilename As String 'jpgファイルのフルパス   jpgFilename = myFolder & ActiveSheet.Range(jpgRg)   '指定したセルにjpgファイルを貼り付ける   Dim rg As Range '挿入する個々のセル   For Each rg In Selection     rg.Select     ActiveSheet.Pictures.Insert(jpgFilename).Select   Next   ActiveSheet.Range(jpgRg).Select End Sub

moonhare
質問者

補足

回答ありがとうございます。 質問の詳細がなくすみませんでした。 セル(C2)---表示ファイル名(1234-5678) セル(B8)---表示位置 または、(B8)(B10)(B12) 画像を保存してあるフォルダ名は D:>mmm>清水>略図 に 1234-5678.jpg が 入っています。 頂いた回答に当てはめてみたのですが… Sub pictureSet() Dim jpgRg As String 'D:\mmm\清水¥略図\ jpgRg = "C2" Dim myFolder As String 'D:\mmm\清水¥略図\ myFolder = "D:\mmm\清水¥略図" Dim jpgFilename As String 'D:\mmm\清水¥略図\ jpgFilename = myFolder & ActiveSheet.Range(jpgRg) Dim rg As Range 'B8 For Each rg In Selection rg.Select ActiveSheet.Pictures.Insert(jpgFilename).Select Next ActiveSheet.Range(jpgRg).Select End Sub 何がどう違うのかさえ、判断できません(-_-;) あまりに無知ですみません。 よろしかったら、もう一度ご回答を…

  • BlueRay
  • ベストアンサー率45% (204/453)
回答No.1

このようなもののことですか。サンプルを書きます。 ○サンプル セル(A1):Sample.jpg   ---表示ファイル名 セル(B1):A5        ---表示位置 Sub getPic()   Range(Range("B1")).Select   ActiveSheet.Pictures.Insert("C:\hogehoge\Picture\" & Cells(1, 1).Text).Select End Sub 複数にするには、少しばかり手を加えればいいです。

moonhare
質問者

お礼

回答ありがとうございます。 質問の詳細がなくすみませんでした。 セル(C2)---表示ファイル名(1234-5678) セル(B8)---表示位置 画像を保存してあるフォルダ名は D:>mmm>清水>略図 に 1234-5678.jpg が 入っています。 知識が”無”のため、頂いた回答を把握するのに時間がかかりそうですが… ¥Picture\はフォルダ名を入れるのですよね? あまりに初歩な質問でしょうが… また、教えてくださいm(__)m

関連するQ&A

  • EXCEL マクロ

    エクセルマクロ初心者です。 エクセル2007で、複数選択したセルの合計値・平均値をコピーできないか悩んでいます。作業によって、選択するセルが変わりますので、セル番地の指定をせずにマクロの書くことができますでしょうか。 イメージとしては、複数のセルを選択をしたときに、ステータスバーにオートカルクで表示される合計値・平均値をクリップボードにコピーし、別のセルに結果をペーストする感じ(ペーストする際に合計値・平均値のどちらを貼り付けるか選択できれば尚、良)です。 個人用マクロブックに登録して、不特定ブックで使用したいマクロです。よい方法があれば教えて下さい。

  • VBAで、excelファイルのマクロを実行したら、特定のフォルダのファ

    VBAで、excelファイルのマクロを実行したら、特定のフォルダのファイルの特定セルを確認し、その結果を反映する、というマクロを組みたいと思っています。 具体的には下記のマクロを組みたいと思っています。 ------------------------------------------------------ (1)マクロを組むファイル【worksheet】にてマクロを実行する (2)特定のフォルダのファイルのA1、A2、A3、A4の全てに”OK”という文字が入っているかを確認 ・C:\excel\1番\kakunin_1.xls にあるkakunin.xlsの、A1セルに”OK”という文字が入っていたら次はA2、A3、A4の順序で 確認する。 ・このとき、A1にOKと入っていて、A2には入っていなかった場合は、A2という文字を、【worksheet】のB1セルに結果を表示する ようにする。 ・特定のフォルダの構成は下記 C:\excel\1番\kakunin_1.xls |--\2番\kakunin_2.xls |--\3番\kakunin_3.xls ・上記の処理を、1番フォルダの【kakunin_1.xls】で実行し、【worksheet】のB1セルに結果を表示。 2番フォルダの【kakunin_2.xls】で実行し、【worksheet】のB2セルに結果を表示。 3番フォルダの【kakunin_3.xls】で実行し、【worksheet】のB3セルに結果を表示。 ------------------------------------------------------ VBAどころかプログラミング自体が初めてなので、例えば引数が何かも一々考えて1文ずつ読み込まなければいけない状態です。。 どなたかこの無知な自分に力を貸して頂けないでしょうか?

  • エクセルマクロ特定のセル

    マクロの勉強したばかりですみませんが、 エクセル2003で、特定のセルが選択されたときにマクロを実行したいのですが、可能でしょうか? どうやればよいか教えていただきたいです。

  • エクセル マクロで

    教えて下さい。 ある特定のフォルダ内に(例 c:\写真) に いくつかのファイルがはいっています。 あるセルに ファイル名を入力すると フォルダ内にある ファイルから セルに記入したファイルと一致する ファイルを 読み込み 貼り付けるマクロを教えて下さい。 ちなみにファイルは jpg等の写真ファイルです。

  • エクセル 画像挿入マクロで、ずれます

     エクセル2003 ・ 挿入ファイルは emf です。  毎回 かなりの頻度で 挿入→微調整(幅をかえたり位置をかえたり)の作業があり、非常に効率が悪くマクロで出来ないものかと思いトライしていますが、何故か実行すると、少しずれて挿入(もしかすると挿入後の調整部がずれている?)されてしまいます。 後、下記のようなエラーがでる時があります。 実行時エラー’-2147024809(80070057)’: 指定した名前のアイテムが見つかりませんでした。 マクロくんですぐなので、ファイルを消してもいません。  エラーがでたマクロでは毎回同じ場所でエラーになります。何が原因なのでしょうか?  マクロで、ずれない様に挿入・位置・幅調整はどのようにするのでしょうか? (マクロ編集で数値をかえて調整しようかとおもいましたがいまいち微調整がうまくできません)

  • コピーのマクロ(エクセル)

    同一行で、データが入力されている連続した複数のセルの一部のセル(複数の時も有り)を選択状態にして実行した時に、選択状態になっているセルが含まれる連続したセルをコピーして指定位置に貼り付けるマクロとして以下を試してみましたが、うまくいきません。 どこが間違っているのでしょうか? a = ActiveCell.CurrentRegion.Column ActiveCell.CurrentRegion.Copy Destination:=Cells(30, a)

  • エクセル2000で作ったファイルをエクセル2007で

    OSはWinXPです。エクセル2000でこちらで作成して頂いた下記のようなマクロを使用していました。 セルI6,I21,I39,C39へZ:\社内データ\生産管理\製品見取り図\添付用に入っているセルM15の名前の略図を自動で添付するというものです。 この度、職場のパソコンの入れ替えに伴いエクセル2007に変更され、2007でこのファイルを開きマクロを実行すると 4枚の略図は指定したセルとは違う場所へ重なって添付されてしまいます。 (フォルダ名は修正済) エクセル2000で作成したマクロは2007では正常に動作しないものですか?変更するべきコマンドなどがあるのでしょうか? 他にも動作しないマクロがあり困っています。エクセル2007の操作にまだ不慣れな為アドバイスを宜しくお願いします。 Sub pictureSet() Dim jpgRg As String jpgRg = "M15" Dim myFolder As String myFolder = "Z:\社内データ\生産管理\製品見取り図\添付用\" Dim jpgFilename As String 'jpgファイルのフルパス jpgFilename = myFolder & ActiveSheet.Range(jpgRg) & ".jpg" '指定したセルにjpgファイルを貼り付ける Range("I6,I21,I39,C39").Select '挿入する個々のセル For Each rg In Selection rg.Select ActiveSheet.Pictures.Insert(jpgFilename).Select Next ActiveSheet.Range(jpgRg).Select End Sub

  • excelで セルの移動時にマクロ実行を設定したい。

    エクセルでボタンオブジェクトを作りクリックすると実行するようなマクロのを登録方法はわかるのですが、特定のセルB2に数値を入力してEnterKeyを押した際に実行するようにマクロを登録するにはどうするのでしょう。マクロの編集画面で 最初の行が Sub となっていますが、あそこに何かをいれたらいいのでしょうか?教えてください。よろしくお願いします。

  • エクセルマクロでご教示ください

    エクセルで作られたデータファイルに対し、ある操作を施して上書き保存するというマクロを作りました。 そのマクロを走らせるとファイル名を聞いてきまして、そこでファイル名を入力してやれば、ある操作を施したあと 自動的に上書き保存までしてくれるのですが、対象ファイルが複数個あると、ひとつ実行したあとまたひとつ ファイル名を入れて、またそれが終ったら次のファイル名を・・・というように、ひとつひとつ実行しなければならない というのが現状です。 これを次のように改良したいのですが、どうすればいいのでしょうか? 1.マクロを立ち上げる。 2.処理する複数のファイルが入っている「フォルダ」を選ぶ。  (一覧表示のウィンドウが出てきて、その中で「フォルダ」を選ぶ) 3.そのフォルダの中に入っているエクセルファイル全てに対し、既に作成済みのマクロを順次実行する。 というものです。 よろしくお願いします。

  • VBSでEXCELのXLSTARTにあるマクロを実行するには

    VBSを実行したときに既にEXCELを開いている場合にはFor Each wb In Workbooksを使ってXLSTARTフォルダにあるファイルのVBAマクロを実行できます。しかし、EXCELを開いていない場合にはCreateObject("Excel.Application")でEXCELを開いてもXLSTARTフォルダにあるファイルそのものが見つかりません。VBSを使わず、プログラムファイルからEXCELを開く場合にはXLSTARTフォルダにあるファイルも問題もなく開きます。どうすればEXCELを開いていない場合でもVBSでEXCELのXLSTARTにあるマクロを実行できるでしょうか? 因みにXLSTARTのフォルダパスは不特定多数の環境(OSはWindows95-XP、EXCELは97-2007の組合せ)で特定されていないものとします。さらにツール、オプションの全般タブの「起動時に全てのファイルを開くフォルダ」にはXLSTARTが指定されているものとします。

専門家に質問してみよう