• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:条件付マクロの質問です)

エクセルのマクロでフォルダ内の写真データを挿入表示する方法

このQ&Aのポイント
  • エクセルのマクロを使用して、特定フォルダ内の写真データを挿入表示する方法について質問です。
  • フォルダ内には、4桁の名前の写真データが多く格納されています。
  • マクロを作成したが、該当する番号の写真データがフォルダ内にない場合にマクロを終了させる方法がわかりません。

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

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

回答内容の使い方が間違っています ActiveSheet.Pictures.Insert("C:\Users\SUZUKI\Desktop\777\" & Worksheets("検索出力表").Range("B3").Value & ".jpg").Select でエラーになるということは "C:\Users\SUZUKI\Desktop\777\" & Worksheets("検索出力表").Range("B3").Value & ".jpg" というファイルが存在しないということです マクロの冒頭に dim sName as String sName = "C:\Users\SUZUKI\Desktop\777\" & Worksheets("検索出力表").Range("B3").Value & ".jpg" if Dir(sName) = "" then   Exit Sub End if としてみましょう

noname#256688
質問者

お礼

おかげさまで希望どおりのマクロ動作をさせることができました。 勝手な質問にもかかわらず、分かりやすいご説明や詳しいコードまで 教えていただきたいへん感謝しております。ありがとうございました。 これを機にさらにマクロの勉強に励んで行きたいとおもいます。 重ね重ねありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

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

>条件付マクロの質問です 質問のようなのは、「条件付マクロ」とは言わないだろう。そういう概念機能も無いだろう。VBAには条件判定は出てくるのが当たり前で、これを言うなら、すべてのVBAがそうなる。 ーー #1のご解答を受けて、自分でその路線で、やってみたのか。 (A)やり方がわかりません (B)その通りやったのですがうまくいきません など書いてから、情況を説明すべきだろう。 その結論ぐらい、解答のお礼の印に書くべきだろう。自分のコードを補足欄に長々と書いたりして要るが。 ーー 小生は、質問のコードを多少変えてやってみて、#1解答の路線で、下記でシートに写真ガ出ることを確認した。 後は自分で修正すること。 Sub test01() fd = CurDir MsgBox fd fn = "C:\Documents and Settings\XXX\My Documents\My Pictures\" Pn = "PC210325.JPG" MsgBox fn & Pn If Dir(fn & Pn) = "" Then MsgBox Pn & " の画像ファイルが存在しません" Exit Sub End If Worksheets("Sheet1").Select ThisWorkbook.Worksheets("Sheet1").Activate Worksheets("Sheet1").Range("B2").Select 'ActiveSheet.Pictures.Insert("C:\Users\SUZUKI\Desktop\777\" & Worksheets("検索出力表").Range("B3").Value & ".jpg").Select ActiveSheet.Pictures.Insert(fn & Pn).Select Selection.ShapeRange.LockAspectRatio = msoTrue Selection.ShapeRange.Height = 300 End Sub 問題は上記のfnとPnの指定だけだ。うまくいかない場合は、存在しないものを指定していないか、余分な文字やもれている文字が無いか。 これを参考にして、たとえエラーが出ても、自分であれこれやって見て、修正するべきだ。 前のステップでmsgBoxを入れて確認などが有効と思う。 質問なのだから、そのまま丸写しで動くコードを求めるな。

noname#256688
質問者

お礼

早速のご指摘、ご指導ありがとうございました。教えていただいたプログラムを自分なりに確認し動作のチェックを行ったところ、うまく動作させることができました。また、メッセージを表示させることはたいへん参考になりました。ここまでご丁寧にコードを書いていただきたいへん感謝いたします。 また、質問の仕方や丸写しなどに対する非常識な行いに対してお詫びもうしあげます。 このたびはたいへんありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • edomin7777
  • ベストアンサー率40% (711/1750)
回答No.1

If Dir("フルパスのファイル名")="" Then  Exit Sub End If で、判定できませんか? > 条件でif~thenなどあるようなのですが上手く行きませんでした。 どうやったら上手くいかないのかを記載しないと、誰にも判らない…。

noname#256688
質問者

お礼

早速の御回答ありがとうございました。教えていただきましたことを参考にして再度自分なりに確認して行きたいと思います。 大変感謝しております。ありがとうございました。

noname#256688
質問者

補足

早速のご回答ありがとうございます。確かに自分の内容を記載しないと分からないです。たいへん失礼いたしました。 教えて頂いた構文を下記のように入れてみたのですが、「実行時エラー 1004 PicturesクラスのInsertプロパティを取得できません 」というウインドウが出てしまいます。 --------------------------------------------------------- Sub Auto_Open3() ' ' Auto_Open3 Macro ' If Dir("C:\Users\SUZUKI\Desktop\777\") = "" Then Exit Sub End If Worksheets("画像").Select ThisWorkbook.Worksheets("画像").Activate Worksheets("画像").Range("B2").Select ActiveSheet.Pictures.Insert("C:\Users\SUZUKI\Desktop\777\" & Worksheets("検索出力表").Range("B3").Value & ".jpg").Select Selection.ShapeRange.LockAspectRatio = msoTrue Selection.ShapeRange.Height = 300 End Sub ---------------------------------------------------------- ちなみに内容は、「検索出力表」というシート内のB3セルに写真フォルダ内の四桁 番号を入れて、存在すれば別シート「画像」シートにそれを図として挿入 するのが目的です。 だた、存在しない場合上記のようなエラーウインドウが出てしまうので、それを 防ぐために存在しない場合はマクロを強制終了させたいということで ございます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • マクロ VBA 配列内の比較方法

    いつも大変御世話になっております。 WiindowsXP環境にある【D:\】フォルダ内に【マクロ.xls】があります。 そのファイル内にはボタンがあり、 ボタンを押すとマクロが稼働します。 そのプログラムには数字を格納する配列 FLAG(1 to 10) があり 毎回ボタン押すごとに入る数字が違います。 入る数字は 1 と 0 しか入らない仕組みです。 例) 1001101101 や 0110100110 のように毎回違います。 問題はその後のプログラムなのですが 都合上、 (1)3桁目と5桁目が1の場合 (2)4桁目と6桁目が1の場合 (3)4桁目と7桁目が1の場合 (4)7桁目と8桁目が1の場合 であってはいけないので それをチェックするプログラムを作成したのですが、 下記のような長ったらしい文になりました。 ---------------------------コード開始--------------------------- (省略) If FLAG(3) = 1 And FLAG(5) = 1 Then GoTo NG: ElseIf FLAG(4) = 1 And FLAG(6) = 1 Then GoTo NG: ElseIf FLAG(4) = 1 And FLAG(7) = 1 Then GoTo NG: ElseIf FLAG(7) = 1 And FLAG(8) = 1 Then GoTo NG: Else GoTo OK: End If NG: MsgBox "NG" Exit Sub OK: MsgBox "OK" (省略) ---------------------------コード終了--------------------------- もっと綺麗なコード設計は可能でしょうか? もしご存知の方がいらっしゃるようでしたら、お手数ですがご教授願いますでしょうか? 以上、何卒宜しくお願い致します。

  • マクロ

    マクロ初心者です。 シート名=社員番号(数字2~3桁) 以下のようなマクロを組んでみましたが、 実行してみると該当する社員番号のシートがあっても 「該当する社員が存在しません」と出てしまいます。 間違いをご指摘いただけると助かります。 Sub 社員検索()   Dim SheetName As String   SheetName = InputBox("社員検索" & vbLf & vbLf & "社員番号を入力して下さい")    If SheetName = vbNullString Then     Exit Sub     Sheets(SheetName).Activate    Else     MsgBox "該当する社員が存在しません"    End If End Sub よろしくお願いいたします。

  • マクロについて(word2003)

    こんばんは。100枚程度のJPGの写真データを word(2003)の表1つの表につき、1枚の写真を貼り付けたいと思っています。 (100の表に100の写真データ、OS:windowsXP) いちいちwordの図の挿入をしていると、数が多いので手間がかかります。 そこでマクロ等を組んで、効率良く写真をwordに貼り付けたいです。 具体的にどうすればよいか教えて下さい。宜しくお願いします。

  • エクセルマクロで指定フォルダをセルから読み取り保存する方法を教えて下さい

    エクセルマクロで行き詰まっております。 いい方法があればと思い投稿させていただきました。 ご教授よろしくお願いいたします。  セル内に入力されている日付データから、月だけを読み取り、該当月フォルダへ格納するようなマクロはありますでしょうか? 例) セルA1        2007/11/1   格納フォルダはCドライブの業務フォルダ内に4月・5月~3月という名前のフォルダを準備しております。 マクロ初心者で大変申し訳ありませんが、どうぞよろしくお願いいたします。

  • 【マクロ】Excelでコンタクトシートを作成

    Excelを用いコンタクトシートのような配列で 画像を挿入(複数)させるマクロを作成したいのですが 「縦5枚×横3枚」のような配列にする時に 「横3枚」挿入させる方法がわかりません。 ご教授お願い申し上げます。 Q:下記のような配列で画像を挿入するには? -------------------------------------------    A   B   C   D   E   F 1     01.jpg    02.jpg    03.jpg 2 3     04.jpg    05.jpg    06.jpg 4 5     07.jpg    08.jpg    09.jpg 6 7     10.jpg    11.jpg    12.jpg 8 9     13.jpg    14.jpg    15.jpg 10        ---次ページ--- 11    16.jpg    17.jpg    18.jpg 12 13    19.jpg    20.jpg    21.jpg 14 15    22.jpg    23.jpg    24.jpg 16 17    25.jpg    26.jpg    27.jpg 18 19    28.jpg    29.jpg    30.jpg 20        ---次ページ--- 21    31.jpg    32.jpg    33.jpg 22 23    34.jpg    35.jpg    36.jpg 24 25    37.jpg    38.jpg    39.jpg ・ ・ ・ ・ ------------------------------------------- ※画像挿入のマクロに関してはこちら↓の質問を参考にしています。  質問番号:4676078  「エクセルで写真挿入 マクロ」  http://oshiete1.goo.ne.jp/qa4676078.html ※画像はJPG形式に限りません。(BMP、GIF等も) ※コンタクトシート作成ソフトは使いませんので  必ずExcelでマクロを使用する方法をご回答願います。

  • エクセルのマクロについて

    現在、数種のデータを格納したファイルが会社のサーバーに保管されています。 各フォルダのデータを閲覧するためルートを作ってあげて目的のフォルダをひらけるようにしたいと考えております。 シートごとに検索項目を設定し、マクロ記録モードでファイルを開く手前まで作成できたのですが、フォルダを開くのがうまくいきません。 フォルダを開くマクロがあれば、教えていただけないでしょうか。 よろしくお願いします。

  • マクロでの条件判断について

    A行に何かデータを入力した場合、同じ列のとなりの行のセルに入力時間を残したいと思い、 例 A1:あ B1:2006/5/9/16:00 A2:い B2:2006/5/10/18:00 以下のマクロを教えて頂いたのですが、 Private Sub Worksheet_Change(ByVal Target As Range) '///A列のセル以外ならマクロ終了/// If Target.Column <> 1 Then Exit Sub '///1行目のセルならマクロ終了/// If Target.Row = 1 Then Exit Sub '///内容がブランクならB列のセルをブランクにする。/// If Target.Value = "" Then Target.Offset(0, 1).Value = "" Else Target.Offset(0, 1).Value = Format(Date + Time, "yyyy/mm/dd hh:mm:ss") End If End Sub A列以外にもC列に入力した値の入力時間をD列にE列に入力した値の入力時間をF列にと、全部で6箇所値を入力したとなりのセルに入力時間が出るようにしたかったのですが、 '///A列のセル以外ならマクロ終了/// If Target.Column <> 1 Then Exit Sub の部分を '///A,C列のセル以外ならマクロ終了/// If Target.Column <> 1 Or Target.Column <> 3 Then Exit Sub のように変更してまずはA列とC列に値を入れて挑戦したのですが、時間が表示されなくこまっておりました。 解決方法をご存知のかたがいらっしゃいましたら、ぜひよろしくお願いいたします。

  • マクロについて質問です。

    A B C   1 3 りんご 2  赤 3 くだもの 4 6 みかん 5 オレンジ 6 くだもの 7 9 ぶどう 8  紫 9 くだもの というデータがシート1にあったとして、シート2のa2セルに6と入力すると以下のようにa5セル以降に抽出し、6という入力を消すと抽出したものも消えるようなマクロ 6 みかん  オレンジ  くだもの 上のような質問で下のマクロを教えていただけたのですが、もし、みかんのb列も3だった場合いしたのようにみかんの行まで抽出できるようにするには下の構文をどうかえたらよいでしょうか。下手くそな質問ですがよろしくお願いします。 3 りんご   赤  くだもの  みかん  オレンジ  くだもの 現在、わかっている構文↓ Private Sub Worksheet_Change(ByVal Target As Range) 'この行から Dim c As Range, wS As Worksheet Set wS = Worksheets("Sheet1") With Target If .Address = "$A$2" Then If .Value <> "" Then Set c = wS.Range("B:B").Find(what:=.Value, LookIn:=xlValues, lookat:=xlWhole) If Not c Is Nothing Then c.Offset(, 1).Resize(3).Copy Range("A5") Else MsgBox "該当データなし" End If Else Range("A5").Resize(3).ClearContents End If End If End With End Sub 'この行まで

  • エクセルでフォルダまたはファイルを開くマクロですが、どのように改良すれ

    エクセルでフォルダまたはファイルを開くマクロですが、どのように改良すればよろしいでしょうか? 下記マクロは、エクセルシートのJ列のあるセルをダブルクリックすると、そのセルに記入された文字列を検索して、該当のフォルダまたは、写真が開きます。(エクセルファイルと写真は同フォルダに保存している場合のみ有効) 困っていることは、J列のセルと該当フォルダまたは、写真ファイルをリンクさせたいのですが、文字列が全て一致している時のみしか開かないことです。 D<デジカメ<商品名フォルダ<写真ファイル 例えば セルJ3の文字列がABCEで、フォルダ名またはファイル名がABCDEFであった場合、文字列ABCEを含む条件で、フォルダ名またはファイル名ABCDEFを開くように改良したいのですが、 また、エクセルファイルと写真ファイルの保存場所は、全く違うフォルダにしたいのですが、 エクセルファイルと写真ファイルは、別フォルダの場合、どのように検索先フォルダのパスを入れたら良いのでしょうか? マクロに詳しい方ご教授下さい。よろしくお願い致します。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim myPath As String If Target.Cells(1, 1).Column <> 10 Then Exit Sub Cancel = True myPath = ThisWorkbook.Path & "\" & Target.Cells(1, 1).Text If Dir(myPath, vbDirectory) <> "" Then Shell "explorer.exe /e,/root," & myPath, vbNormalFocus Exit Sub End If myPath = Replace(LCase(myPath), ".jpg", "\" & Target.Cells(1, 1).Text) If Dir(myPath, vbNormal) <> "" Then Shell "rundll32.exe shimgvw.dll,ImageView_Fullscreen " & myPath, vbNormalFocus End If End Sub

  • エクセルでマクロを実行したいのですが。

    エクセル上に大量の写真を縦に並べて挿入したいのですが、自動でやるためのマクロのやり方がまったくわかりません。 たとえばAの1に写真1を挿入して4×3センチにする。次にAの10に写真2を挿入してまた4×3センチにする。 ということを繰り返したいのですが、自動でできますでしょうか・・・。 写真は100枚くらいあって、1つのフォルダにまとめてあります。 エクセルの本をいくつか見てみたのですが、マクロについて書かれた本がなかったので、もしかしたら初心者にはできないことなのかもしれませんが、お願いします。