• ベストアンサー

ExcelのマクロでExcelファイルを抽出して開きたい

あるフォルダ内にある複数のExcelファイルの中から、希望のExcelファイルを開くマクロをつくりたいと思っています。 フォルダ名は任意の数字、ファイル名は任意の数字(フォルダ名と同一)+版数データです。 例) C:\excelsheets\1234567890_1\1234567890_1_0_2_Sheet.xls 「_整数」の部分が版数データ。 動作としては、マクロを実行したら、任意の番号を入力してExcelファイルを開くという流れを考えています。 ちなみに、開くファイルは、 希望A 指定した番号の最新のファイルだけを開く。 希望B 指定した番号のファイルを、版数に関係なく全て開く。 を考えています。(AがダメならB) マクロの自動保存で出来たマクロに手を加えて出来たのが下記です。 Sub test() Dim Select1 As Double Select1 = Application.InputBox("Noを入力してください", "No. Select") ChDir "C:\excelsheets\" & Select1 & "_1" Workbooks.Open Filename:= _ "C:\excelsheets\" & Select1 & "_1\" & Select1 & "_1_0_2_Sheet.xls" End Sub ただし、これだと版数の変化についていけないので、試しに、    "C:\excelsheets\" & Select1 & "_1\*.xls" と、ワイルドカードが使えるか試したらエラーになりました。 初歩的な事かもしれませんが、マクロの勉強を始めたばかりで試行錯誤しながらやってます。ご助言、よろしくお願いします。

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

  • ベストアンサー
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

例えば。 Dドライブ直下にabc_0_1.txt~abc_0_5.txtと言う5つのテキストファイルがあるとします。 ファイル名abcは重複しますが、_0_1~_0_5が版数とします。 そのうちの最新版のフルネームを出すとしたら、 Sub try() Dim st As String Dim Fname As String Dim i As Integer st = Dir("D:\abc*.txt", vbNormal) Fname = st Do Until st = "" If st > Fname Then Fname = st st = Dir() Loop Fname = "D:\" & Fname MsgBox Fname End Sub こんな感じではどうでしょう。(他にも方法はあると思いますけど)

tatakana
質問者

お礼

ご回答ありがとうございます。 n-junさんの方法で解決できました!

その他の回答 (1)

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.2

な~るほど、#1さんの様に、単純にファイル名の比較でできてしまうんですね。最終更新日で見つけるコードを書いてみましたので、折角作ったのでアップしておきます。(自分の環境で試験したままなので、ご質問の内容に沿っていません) Sub test3() Dim fileList As New Collection, fileName As Variant, folderName As String Dim fso As Object Dim newest As Double, latestFile As Variant Dim timeSerial As Double Set fso = CreateObject("Scripting.FileSystemObject") folderName = "C:\Documents and Settings\?????\My Documents\" fileName = Dir(folderName & "20081116*.xls", vbNormal) Do While fileName <> "" fileList.Add Item:=fileName fileName = Dir() Loop For Each fileName In fileList timeSerial = DateValue(fso.GetFile(folderName & fileName).DateLastModified) + TimeValue(fso.GetFile(fileName).DateLastModified) If newest < timeSerial Then newest = timeSerial latestFile = fileName End If Next Workbooks.Open fileName:=folderName & latestFile End Sub

参考URL:
http://officetanaka.net/excel/vba/filesystemobject/file.htm
tatakana
質問者

お礼

ご回答ありがとうございます。 こちらは更新日で抽出する方法ですね。 参考になります。

関連するQ&A

  • ■ エクセルマクロについてです。初級?

    エクセルのマクロでデスクトップにあるエクセルファイルを開くにはどうしたらいいのでしょうか? 現在は、エクセルファイルA.xls B.xlsという2つを開いていて、マクロを実行することができるのですが、これをA.xlsだけ開いている上体で、実行したいのです。 なので、デスクトップに置いてあるB.xlsファイルを開くコマンド?というか、関数が知りたいのですが、どうしたらいいのでしょうか? 現在はこのような感じになっております。 Sub Macro2() ' ' Macro2 Macro ' マクロ記録日 : 2008/9/10 ユーザー名 : ' ' ActiveCell.FormulaR1C1 = "12345" Range("G17").Select ActiveCell.FormulaR1C1 = "129876" Range("G18").Select Windows("B.xls").Activate Range("N16").Select ActiveCell.FormulaR1C1 = "8/4/2008" Range("N17").Select ActiveWorkbook.Save Range("O16").Select ActiveWorkbook.Save ActiveWindow.Close End Sub

  • 【Excel2003】マクロの実行

    お世話になります。 フォルダー内全てのエクセルファイルに、あるマクロを実行したいのですが可能でしょうか? 例としましては フォルダー「変更ファイル」 以下中にあるファイル ------------------------ ファイル「A.xls」 ファイル「B.xls」 ファイル「C.xls」 ファイル「マクロ.xls」←ソートを行うマクロ入り ------------------------ 「変更ファイル」フォルダー内の「マクロ.xls」を実行してA,B,Cファイル(フォルダー内全てのファイル)内データーを各ファイル毎ソートしたい。 この作業はマクロ.xlsのマクロをカスタマイズしてすることは可能でしょうか? 可能ならやり方を教えてください。 お願いいたします。

  • ファイルを開くマクロ

    フォルダ(A)の中にエクセルファイルが(a,b)2つあります。aのファイルに下記のマクロを組んで、ボタンにマクロを貼り付けます。マクロでbのファイルを開きたいのですが、ファイルが見つかりませんとなってしまいます。フォルダ(A)は場所を移動して使う予定です。うまく動かなくて困っております。ご教授よろしくお願い致します。 Sub CCC()   s_PathCheck   Workbooks.Open Filename:=myWBPath & "b.xls" Sheets("P").Select Range("a11").Select End Sub Sub s_PathCheck() Dim n As Variant myWBPath = Workbooks(1).Path myWBName = Workbooks(1).Name n = InStr(myWBName, ".xls") myWBNameF = Left(myWBName, n - 1) End Sub

  • エクセル マクロで特定ファイル名だけを開く

    エクセルのマクロで 特定のファイル名だけをフォルダの中から探して 開くというものを作りたいのですが うまくできません。 フォルダを指定して 「060927.xls」というエクセルファイルだけを 開きたいのですが この日付のところが毎日変わるので 「06XXXX.xls」というような 最初が06であと4つの文字が入ってるファイル名だけを 流動的に指定できるようにするには どのようなVBAマクロにすればよいのでしょうか? とても困っています。 是非教えてください!宜しくお願いします。

  • Excel マクロでファイル名を変数に・・・

    初心者です。検索してもわからなかったので質問です。 下記のようなマクロの処理で「AAA」というファイル名のExcelに「2.xls」からデータをコピーし貼り付けています。    ・    ・ Windows("AAA.xls").Activate Rows("4:4").Select Selection.Insert Shift:=xlDown Windows("2.xls").Activate Range("C6").Select Selection.Copy Windows("AAA.xls").Activate Range("A4").Select ActiveSheet.Paste Windows("2.xls").Activate Range("C7").Select Application.CutCopyMode = False Selection.Copy    ・    ・ 今回は「2.xls」ではなく「3.xls」、「4.xls」、・・・といったように違うファイル名で同じ処理を行ないたいので「2」と指定するのではなく「(ファイル名).xls」といった形にしたいのですが、それは可能なのでしょうか。 ご意見宜しくお願いいたします。

  • AccessのVBAで、Excelのマクロを起動したい

    環境 OS:XP    OFFICE:2003 Accessで、同一フォルダにあるエクセルのマクロを起動したいのですが、どのようにコーディングすればよろしいでしょうか? フォルダ:C:\test Access:テストAccess.mdb Excel:テストExcel.xls 起動したいマクロ Sub all_delete() Sheets("シートA").Select Cells.Select Selection.Delete Shift:=xlUp End Sub よろしくお願いします。

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

    皆様お世話になります。 あるフォルダーの下位にユニークに名前の付けられた900個ほどのフォルダーがあり それれぞれの、フォルダーの中にA,Bというフォルダーがあります。 その中にa.xls,b.xlsなどというファイルが存在しています。 そのa.xlsやb,xlsの名称を変換したいのですが数量が非常に多いためマクロか、何かで変更する方法がありますか? ファイル名の条件として 開いたエクセルのC,4とH,4を合体させたファイル名にすると、非常にありがたいのですが。 よろしくお願いします。

  • 【大至急】excel2003 VBAマクロの質問

    excel2003でのVBAマクロを作っているのですが、いまいちよくわからないのです 下記条件を満たすサンプルコードのご教示をお願いします。 ■初期状態 仮にフォルダ、ファイル配置が下記の通りだとします C:\マクロ.xls C:\template.xls C:\aaa\ C:\bbb\bbb_test.xls C:\ccc\ . . . C:\nnn\ ■動作要件 (1)マクロ.xlsは自分のファイルパスを検索する (2)マクロ.xlsと同じフォルダにあるサブフォルダ配下に、各々フォルダ名_test.xlsというファイルを作成する (3)上記(2)で.xlsファイルを作成するとき、template.xlsをコピーして作成する (4)既にサブフォルダ配下に***_test.xlsファイルが存在する場合は作成しない <マクロ実行後の状態> C:\マクロ.xls C:\template.xls C:\aaa\aaa_test.xls ←template.xlsからコピー作成 C:\bbb\bbb_test.xls ←ファイル作成、上書きはしない C:\ccc\ccc_test.xls ←template.xlsからコピー作成 . . . C:\nnn\nnn_test.xls ←template.xlsからコピー作成 (5)上記(1)-(4)を、フォルダがなくなるまで繰り返す 以上です。よろしくお願いします。

  • Aファイルでマクロを組み他のファイルを動かしたい

    Sub マクロ1() Workbooks.Open Filename:="C:\Users\inoue\Documents\BB.xls" ここでファイル名を選ぶのはどんな命令文 したら良いかご指導願います      (ファイル名がその度に変更するため)     Range("D7:H16").Select With Selection.Interior .ColorIndex = 6 .Pattern = xlSolid End With Selection.Interior.ColorIndex = 6 Range("D18").Select Windows("A.xls").Activate End Sub 上記の命令文で ファイル呼び出しの時 他のフォルダのファイル名 その都度選びたいのですご指導願います

  • エクセルマクロ 次のようなプログラム教えてください

    エクセルのマクロで、次のようなことをしたいと思っていますが、 素人でわかりません。 教えていただけますか。 ---------------------------------- o動かしているファイルをa.xlsとします。  a.xlsは、3行目からA列に名前、B列~D列にデータが入っていて、  各行ごとのファイルを作りたい。(行数は決まっていない)  なお、セルE1にある文字が入っている。 o各ファイルは、原紙としてgensi.xlsとして保存されているファイルに、  a.xlsのB~D列のものを入力したものを作りたい。  (B~D列のデータは、gensi.xlsのそれぞれセルC7・C8・C9に入力する)   gensi.xlsは、a.xlsと同じフォルダにあります。 o作成場所は、「C:\date」の中に、セルE1にある文字のフォルダ、A列に  ある名前のフォルダに作りたい。 (セルE1の文字のフォルダは、マクロを初めて実施するときは無いと思います  が、2回目からは存在すると思います。A列の名前のフォルダはマクロ実施時  にはありません。作成するファイル名は、A列の名前と同じ(フォルダ名と同じ).xls にします。) o実行ボタンを3つ作って、1つは今選択されている行のフォルダ・ファイルを作る。  2つ目は数字を入力させて、今選択されている行から入力した数字の行までを一括  で作成する。  3つ目は、3行目から現在入力されている行すべてを一括で作成する。 ------------------------------- 上記のことをしたいと思っています。 よろしくお願いします。 駄文ですみません。 なお、エクセルは古いバージョンでエクセル2000です。

専門家に質問してみよう