• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excelマクロのdirについて質問です)

Excelマクロのdirでセルの参照方法について

このQ&Aのポイント
  • ExcelマクロでのDir関数を用いてセルの参照方法について質問です。具体的には、指定した文字列を含むフォルダを取得する際に、正しく検索されない問題が発生しています。
  • 質問者は、lens_type、lens_num、lens_dateという3つのセルにそれぞれ値を入力しており、指定したフォルダ内で、lens_dateまでの名前に当てはまるフォルダを取得したいと考えています。
  • しかし、現在のマクロでは正しく検索されず、質問者はどこが間違っているのか分からない状況です。質問者は、Dir関数の引数の組み立て方に問題があるのではないかと考えています。

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

  • ベストアンサー
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.2

今のコードですとWARP フォルダ内の「&lens_date」で始まり「.」で終わるディレクトリを探しています。 folders(0) = Dir("\\128.34.8.110\LDNfsRoot\LensData\" & lens_type & "\" & lens_num & "\WARP\ &lens_date*.", vbDirectory) ↓ folders(0) = Dir("\\128.34.8.110\LDNfsRoot\LensData\" & lens_type & "\" & lens_num & "\WARP\" &lens_date &"*", vbDirectory)

yyrd0421
質問者

お礼

お礼が遅くなりすみません。 希望通りの事ができました。 ありがとうございます。 ベストアンサーとさせて頂きます。

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

その他の回答 (1)

  • takncom
  • ベストアンサー率16% (15/91)
回答No.1

悪いとしたら、それぞれの変数の中身とかですね。 dirにセットする内容は確認していますでしょうか?

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

関連するQ&A

  • Excelマクロで年度別にフォルダ作成したい。

     Excel2003です。  日々の売り上げ集計ファイルをボタン一つで保存していくマクロを作っています。 Application.DisplayAlerts = False If Dir(ThisWorkbook.Path & "\" & Format(Date, "yy") & "年集計", vbDirectory) = "" Then MkDir Path:=ThisWorkbook.Path & "\" & Format(Date, "yy") & "年集計" ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & Format(Date, "yy") & "年集計\" & Format(Date, "yymmdd") & ".xls", FileFormat:=xlNormal, _ Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _ CreateBackup:=False Else ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & Format(Date, "yy") & "年集計\" & Format(Date, "yymmdd") & ".xls", FileFormat:=xlNormal, _ Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _ CreateBackup:=False  とりあえず指定のフォルダに「yymmdd.xls」という名前をつけて保存、もしフォルダがなければ作るというところまで作れました。そこで、今度は「**年度」というフォルダに自動的に保存され、もし「**年度」というフォルダがなければ作るようにしたいのです。上に上げたマクロでは「**年」というフォルダを作ってその中に保存というところまでは出来ているのですが……。とにかく年度で分ける場合の処理がよくわかりません。  回答よろしくお願いします。

  • エクセル:マクロを使ったリネーム

    お世話になります。 下記の内容をエクセルのマクロでできるでしょうか? あるフォルダ(ここでは例としてAフォルダとする)のなかに複数のフォルダがはいっています。これらのフォルダ名は実際はかなり長いのですが、必ず5桁の数字+アンダーバーではじまります。 (例:00123_●●●) この各フォルダにはいくつかのファイルが入っていて、拡張子がxmlのファイルが必ず1つ入っています。この拡張子がxmlのファイル名の先頭にフォルダの5桁の数字+アンダーバーをつけた名前にリネームしたいのです。 例:abcde.xml でフォルダ名が00123_●●●の場合  → 00123_abcde.xml にする。 そしてリネームしたxmlファイルをAフォルダ直下に移動させたい。 事情がありリネームソフト等は使えません。 マクロを記述したエクセルファイルをAフォルダ直下に入れて動作させるものとします。 エクセル2003です。 よろしくお願いします。

  • Exelマクロで指定フォルダ内の中身を

    Exel VBA 初心者です。 指定したフォルダに入っているフォルダの名前を、Exelマクロで書き出すようにしたいのですが、 どうしたらいいでしょうか。 マイドキュメント\業務ファイル この「業務ファイル」というフォルダの中身を整理するために、 フォルダ名の一覧をExelのシートに書き出したいのです。 以前、指定フォルダ内のファイル名を書き出すマクロを作ったことがあります。 これを改造すればできますか? このマクロでは、B1セルにパスを入れるようにしてあります。 ―――――――――――――――――――――――― Sub ファイル名一覧作成() Dim フォルダ As String Dim ファイル名 As String Dim 行 As Long フォルダ = Cells(1, 2).Value & "\" ファイル名 = Dir(フォルダ & "*.*") Cells(4, 1).Value = ファイル名 行 = 4 Do Until ファイル名 = "" Cells(行, 1).Value = ファイル名 行 = 行 + 1 ファイル名 = Dir() Loop End Sub ―――――――――――――――――――――――― 環境:WindowsXP、Exel2003

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

    エクセルでフォルダまたはファイルを開くマクロですが、どのように改良すればよろしいでしょうか? 下記マクロは、エクセルシートの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

  • dirの場所を指定したい

    Serversman@VPSで日次バックアップを作成するためのスクリプトを書いています。 特定のディレクトリの中に、日付を名前とするディレクトリを作って、 その中にバックアップを取りたいのですが、dirの使い方がよく分かりません。 http://www.appleple.com/blog/unix/backup-with-cron.html リンク先の、 dir=$(date +"%Y-%m-%d-%H%M") mkdir $dir cd $dir mysqldump --default-character-set=utf8 -u {ユーザ名} -p{パスワード} ablogcms > ablogcms.sql tar zcfv httpdocs.tgz ../../httpdocs cd ../ find . -name "20*" | sort -r | while read deldir; do let num="${num=0}+1"; if test $num -ge 10; then rm -rf $deldir;fi; done; このスクリプトの場合、日付ディレクトリがルートに作られてしまいますよね。 そうでなく /mnt/smdisk ディレクトリの中に日付ディレクトリを作りたい場合、 スクリプトの最初の部分に一行加えて、 cd /mnt/smdisk ←付け足した行 dir=$(date +"%Y-%m-%d-%H%M") mkdir $dir cd $dir (以下同じ) のようにすれば、目的が達成できますでしょうか? 見よう見まねで付け焼き刃的な勉強をして書いてきたのですが、 どうにも分かりませんでしたので教えて頂ければ助かります。 よろしくお願いいたします。

  • Excel マクロ ファイル名取得について

    Excel マクロ ファイル名取得について 特定のフォルダにあるファイルのファイル名を Excelに一覧として作成します。 下記マクロで実現できたのですが、フォルダでファイルを 「詳細」で並べて上から順番にB列に反映することは 可能でしょうか。 ご回答お待ちしております。 Sub fileName() Dim MyF As String Dim myRow As Long 'ファイル名の取得 myRow = 2 MyF = Dir(ThisWorkbook.Path & "\*") If MyF <> "" Then Do Until MyF = "" Cells(myRow, "B").Value = MyF 'ファイル名 MyF = Dir() myRow = myRow + 1 Loop End If End Sub

  • 「.」と「..」はなんですか? vba

    フォルダのファイル名を取得する時に myFile = Dir(FolderName & "\*.*", vbDirectory) myRow = 2 Do While myFile <> "" Cells(myRow, 1) = myFile myRow = myRow + 1 myFile = Dir Loop こういうコードをすると、 . .. と言うファイル名も取得されるのですが、 . .. と言うファイルは街灯のフォルダの中にはありません。 これはなんでしょうか?

  • エクセルのマクロについて教えてください。

    エクセルのマクロについて教えてください。 Dドライブのaaaというフォルダにある、何百個あるXLSファイルを開いて、カンマを取った後、CSVに保存したいです。 保存の名前はそのままで、拡張子だけをcsvに変えたいです。 エクセルは初級者レベルなのでプログラムも判らないのですが、自分で作ってみました。 Sub Macro20() ' ' Macro20 Macro ' マクロ記録日 : 2010/4/29 ユーザー名 : ' ' Keyboard Shortcut: Ctrl+e ' Application.ScreenUpdating = False '画面更新を一時停止 CChDir ("D:/aaa") 'フォルダー名取得 Filename = Dir(ThisWorkbook.Path & "\*.xls") 'フォルダ内のXLSファイルを検索 Do Until fname = Empty '全て検索 Set wb = Workbooks.Open(myfdr & "\" & fname) 'そのファイルを開きwbとする。 n = n + 1 'カウントしnとする Workbooks.Open Filename:= _ "C:\Documents and Settings\Owner\My Documents\aaa\1.xls" Cells.Select Selection.NumberFormatLocal = "G/標準" ActiveWorkbook.SaveAs Filename:= _ "C:\Documents and Settings\Owner\My Documents\aaa\*.csv", FileFormat:=xlCSV, _ CreateBackup:=False fname = Dir 'フォルダ内の次のCSVファイルを検索 Loop '繰り返す Application.ScreenUpdating = True '画面更新一時停止を解除 MsgBox n & "件を処理しましました。" End Sub ↓ 駄目でした>< アドバイスどうかお願い致します。

  • エクセルのマクロでファイル名変更

    Dim フォルダ パス = ActiveWorkbook.Path 本体 = ActiveWorkbook.Name 変更1 = Sheets(1).Range("B2") フォルダ = パス & "\" & 変更1 ' & "\" 拡張子 = Sheets(1).Range("B3") 語句1 = Sheets(1).Range("B5") 語句2 = Sheets(1).Range("C5") aa = 1 '7777777777 指定フォルダの書き出し 7777777777 Dim myFileName As String Sheets(1).Select Range("B7:B1000").Clear Range("D7:E1000").Clear 'Rows("2:10000").ClearContents '隠しファイルとシステムファイルも表示 myFileName = Dir(フォルダ & "\" & "*." & 拡張子, vbHidden + vbSystem) Sheets(1).Select While myFileName <> vbNullString Cells(Rows.Count, 2).End(xlUp).Offset(1).Value _ = myFileName myFileName = Dir() Wend 下端 = Range("B" & Rows.Count).End(xlUp).Row rrname = 1 For a = 7 To 下端 If rrname < 10 Then Cells(a, 4) = "第00" & rrname & "話" & Cells(a, 3) & "." & 拡張子 ElseIf rrname >= 10 Then Cells(a, 4) = "第0" & rrname & "話" & Cells(a, 3) & "." & 拡張子 ElseIf rrname >= 100 Then Cells(a, 4) = "第" & rrname & "話" & Cells(a, 3) & "." & 拡張子 End If rrname = rrname + 1 Next a For b = 7 To 下端 旧ファイル名 = Cells(b, 2).Value 新ファイル名 = Cells(b, 4).Value Name フォルダ & "\" & 旧ファイル名 As フォルダ & "\" & 新ファイル名 Next b でファイル名変更マクロを作成したのですが、『ファイル名または番号が不正です』とエラーが返ってきますが、何が悪いのでしょうか?

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

    前回、このサイトにて教えてもらったマクロにて、不明な点が出てきましたので再度質問させていただきます。 ∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞                           ボタン  A  B  C  D  E  F  G    H                  data1                      data2                    data3                      data4                    data5                    data6                      ・                        ・                        ・     ※Gの列にはハイパーリンクが並んでいます。 ※ボタン押下時に選択しているセルの行番号を取得し、その行のA~F列をコピーして、ハイパーリンクで開いた ファイル(date・・・)にはりつける。 ∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞ この作業のマクロを教えていただき、以下のマクロが出来ました。 Sub book() Dim col As Integer '選択行No取得用変数 Windows("book.xls").Activate col = ActiveCell.Row '現在選択している行No格納 Range(Cells(col, 1), Cells(col, 6)).Select '該当行のA~F列選択 Selection.Copy '選択範囲コピー Cells(col, 7).Hyperlinks(1).Follow NewWindow:=True '該当行のリンク開く Sheets("Sheet2").Select '貼り付けシートの選択 Range("a2").Select '貼り付けセルの選択 ActiveSheet.Paste '貼り付け End Sub このマクロで、もともと作成していた6行程度の表では何の不自由も無く作業できました。 次にこの表の行が大量に増えてきましたので \\server\スタッフ\購買 フォルダーに、連続した番号のファイル (date1・date2・・・・date10)を作成し、上記の表の3行目(data1の行)のG列に、ハイパーリンク関数  =HYPERLINK("\\server\スタッフ\購買\"&H3&".xls",H3)を入力。 その後、3行目H列にdate1を入力し、フィルコピーにてdate1・date2・・・・date10までを作成。 次に3行目G列からフィルコピーにてハイパーリンクdate1・date2・・・・date10までを作成。 これで、単純に上記表を拡大することが出来たと思っていたのですが、今まで使っていたマクロボタンを押すと “実行時エラー9:インデックスが有効範囲にありません”となってしまい、デバックすると Cells(col, 7).Hyperlinks(1).Follow NewWindow:=True の行が黄色に点灯していました。 これはどういう内容でしょうか?どの作業が悪いのでしょうか?私としては、この表のからリンクするファイルを 増やし、そのファイル名をフィルコピーにて表に陳列させたいと考えていました。 もし何か良い作業があれば教えていただきたいです。すみませんがよろしくお願いします。

専門家に質問してみよう