• ベストアンサー

excelVBAにて開くフォルダを指定

エクセル上にボタンを作成し、押下するとファイルを選択するダイアログが開き、ファイル(csv)を指定して読み込みエクセルに貼り付けていくというのをつくったのですが、これをフォルダを指定してそのフォルダ内のファイルをすべてループさせて読み込ませたいのですが、フォルダの指定がよくわかりません。参考になるHPなどありましたらご紹介下さい。宜しくお願いいたします。

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

  • ベストアンサー
回答No.2

こんな感じで良いでしょうか? Sub bar() ''' Dim pathname As String Dim fileext As String Dim file2get As String ''' ここではこの2つの変数を書いてしまってますが ''' 本来はコマンドボタンのほうのコードから渡される値ですよね? pathname = "C:\directory\" fileext = "cvs" ''' file2get = Dir(pathname + "*."+fileext) Do While file2get <> "" ''' この下の行は各cvsをそれぞれ1bookとして開きます ''' Workbooks.Open Filename:=file2get   ''' なのでこの部分はお好みに置き換えてください  ''' file2get = Dir Loop End Sub 要は最初のDir()では最初に見つかったファイル名を取得して、 その次のファイルは Loop直前の引数なしの Dir で取得 ってことです

その他の回答 (1)

  • picklse
  • ベストアンサー率65% (26/40)
回答No.1

こちらが参考になると思います。 モーグ->即効テクニック集->ExcelVBA->フォルダ内のファイル名を取得する http://www.moug.net/tech/exvba/0060001.htm

関連するQ&A

  • フォルダ参照ではなくファイルを指定したい。

    フォルダの参照ダイアログボックスを使用して ファイルを選択できるようにしています。 プログラムでcsv形式で保存し、そのcsv形式ファイルを指定して開くという動作を目的としています。 そのファイル選択を固定でなく可変で選択したいと思っています。 Dim ShellApp As Object Dim oFolder As Object Set ShellApp = CreateObject("Shell.Application") Set oFolder = ShellApp.BrowseForFolder(0, "ファイル選択", &H4000,"C:\test") msgbox(oFolder) このような感じで、フォルダのみではなくファイルを指定することに成功しました。 しかし、このフォルダ参照ダイアログが表示されたときに、何も選択せずに キャンセルボタンをクリックするとエラーが出て止まってしまいます。 目的とする動作はできてはいるのですが、キャンセルするとエラーになるので、この原因がわからず困っています。 キャンセルボタンに関することを記述する必要があるのでしょうか? また、この他にファイルを指定するのに適した方法がありましたら教えてください。 参照するフォルダを指定しているのでパスの取得は必要ありません。 ファイルが選択できたらOKです。 フォルダのパス取得のプログラムはよくサンプルを見かけるのですが、 ファイル選択のサンプルはあまり見かけないです(-_-;) また、この方法ではC:\と絶対パスで指定していますが、exeファイルが存在する場所からの相対パスでの指定はできないのでしょうか? csvで保存する時は"./test/test.csv"などと記述して書き込みできていたのですが、 このようなパスを書くとエラーとなりファイルを見つけられないといわれてしまいます。

  • EXCELVBAでフォルダを指定するダイアログ

    EXCELVBAでフォルダを指定する(ファイルではなく)ダイアログを表示させたいの ですが、VBで存在するコントロールがVBAにないので、どのようにすればいいのか わかりません。どなたか、具体的に教えていただけませんでしょうか? EXCEL97を使っています。

  • 【AccessVBA】フォルダを指定してインポート

    私は現在、Accessでフォルダ内のExcelファイルを一括でインポートし集計するというツールを作成しております。 そこで質問ですが、フォルダ指定ダイアログを表示し、ダイアログで指定したフォルダ(中はxls,xlsx,xltmなど)をテーブル上にインポートするようなVBAはありますでしょうか? まとめます。 ・フォルダを選択するダイアログを表示したい ・一つのフォルダの中に、幾つものエクセルファイルが存在する ・ファイル名などはバラバラです ・シート単位でインポートしたいです ・インポートするシートを選択できるようにしたいです ・テーブルのカラムは決まっています 以上です。 どうか皆様のアドバイスよろしくお願い致します。

  • ExcelVBAでファイルを開くフォルダ指定方法

    ExcelのVBAを用いて実験データのcsvファイルをまとめるプログラムを書いています. 肝心のプログラムはほぼできています. しかし OpenfileName = Application.GetOpenFilename("CSVファイル,*.csv?") としたときに開かれるフォルダ(ファイルを指定するフォルダ)がカレントフォルダ?となっております. 実行するExcel(VBA入り)と実験データが下記のパスにあったとして C:\Users\ABC\Documents\Data\110302\ カレントフォルダはなぜかマイドキュメントがデフォルトになってしまいます. C:\Users\ABC\Documents\ 階層移動できるので問題なくもないのですが,一々階層移動するのも面倒なので修正したいと考えております. そこで (1)プログラム実行直前にカレントフォルダを実行するExcel(VBA入り)の位置に変更する方法 (2)カレントフォルダと関係なく実行するExcel(VBA入り)があるフォルダを開く方法 どちらかで対処できると考えたのですがその方法が見つかりません. (ちなみに実行するExcel(VBA入り)の位置は動かすものとするので絶対パスでの指定はなしとします) どなたかご教授お願いします.

  • ファイルとフォルダのどちらも選択できるダイアログ

    環境  OS:Win2000及びWinXP  バージョン:VB6.0 SP5 ファイルとフォルダのどちらも選択できるダイアログを使用する為のAPIを探しています。 詳しく言うと、Windowsのエクスプローラ上で右クリックから新規のショートカットを作成した際の、 ウィザードにて参照ボタンを押下した際に表示される使用されているダイアログのようなものです。 フォルダまたはファイルだけのダイアログをAPIにて表示できる方法は調べて分かったのですが、 フォルダとファイルをどちらでも選択できるダイアログが見つかりませんでした。 逆にフォルダまたはファイルだけのダイアログのAPIのオプションの違いなのでしょうか? ヒント・キーワード・参考サイトだけでも良いので、 よろしくお願いします。

  • ExcelのVBAでフォルダ指定ができるダイアログボックスを出す方法

    指定したフォルダに自動でExcelファイルを保存できるようにしたいのですが、フォルダ指定ができるダイアログボックスはないのでしょうか?ファイルを指定するダイアログボックスはできるのですが、それでは必ずファイルを選択しないといけないので・・・ 指定できる方法が見つかりません。何か良い方法はないでしょうか?よろしくお願い致します。

  • .NET2005でフォルダ指定のしかた

    CSVを出力する処理を作ろうとしています。 出力先のフォルダをユーザーが選べるようにしたいのですが、VB.2005ではフォルダ指定できるコモンダイアログが用意されていないなようです(ファイル名を指定して保存できるSaveFileDialogというものはあるようですが)。 このような場合はどうするのが適切なのでしょうか? 保存先のパスをベタ書きするものでしょうか?

  • GetOpenFilenamのパス指定

    Access2000VBAを使用するのが前提です。 「ダイアログを表示してファイルを選択しフォームに表示する」ファンクションがあります。(下記参考モジュール参照ください:excel 9.0 object Libraryを使用してます) ダイアログを表示した際、指定のフォルダの内容を表示したいのですが、「(1)ChDir」も「(2)SetCurrentDirectory」を使用しても規定フォルダが表示され指定フォルダに移行しません。 何か手段はありますか?ダイアログ自体は問題なく機能してます。 Public Function ふぁいる選択() Dim myFile As Variant, P Dim exlDlg As New Excel.Application P = CurrentProject.Path & "\" ChDrive "C" ChDir P '>>>>>>>(1) Call SetCurrentDirectory(P)   '>>>>>>>>(2) myFile = exlDlg.GetOpenFilename("CSVファイル(*.csv),*契約*.csv") If (VarType(myFile) = vbBoolean) Or (myFile = "False") Then ふぁいる選択 = "" Else ふぁいる選択 = myFile End If End Function

  • ダウンロードファイルを保存するフォルダのデフォルト指定について

    いつもお世話になっております。 Webページからファイル(exe、csv)をダウンロード時の ダイアログボックスで保存を選択した時に デフォルトで表示されるフォルダを指定したいのですが、 可能でしょうか 可能な場合にダウンロードするファイル毎にデフォルトフォルダは 指定可能かも教えてください。 環境は Windows2000 SP2 + IE6.0 になります。

  • Excelの範囲指定セルににcsvファイルのデータを貼り付け

    Excelファイルの任意のセルにCSVファイルのデータを貼り付けたいと思っています。 各ワークシートにCSVファイルのデータを読み込むマクロを書いて実行していたのですが、ファイルが増えてしまったのでもっと簡単に処理ができたら、と思い相談させていただきます。 Visual C# 2008の勉強を始めて間もないので初歩的な質問かと思いますが、宜しくお願い致します。 希望する処理の流れは 1.「Excelファイル選択」ボタンを押すと、指定のフォルダ内のxlsファイルをリストボックスに表示 2.Excelファイル選択 3.「CSVファイル選択」ボタンを押すと、指定のフォルダ内のcsvファイルをリストボックスに表示 4.Excelファイルに対応するCSVファイル選択 5.「データ読込」ボタンでテキストファイルのデータをExcelファイルの指定のセルに貼り付け 6.Excelファイルを保存して終了 1.と3.のリストボックスへのファイル表示はできているのですが、選択したExcelファイルにcsvファイルのデータの貼り付けの方法がわかりません… それぞれのファイルを変数に格納して、更にcsvファイルのデータを配列変数に流して、繰り返し処理で貼り付けていくのかな?と想像しているのですが… http://support.microsoft.com/kb/302096/ja 上記のページを参考にしたのですが、外部ファイルのデータを指定のセルに入力するにはどうしたらよいのかわかりませんでした。 ・Excelファイルの指定のセルはB12~H1011までの7列1000行です。 ・csvファイルは1000行に満たないこともあります。 ・入力するデータ型は整数と文字列です。 PC環境 Windows XP SP3 Excel 2007 Visual C# 2008 要領を得ない説明で申し訳ありませんが、どうぞ宜しくお願い致します。

専門家に質問してみよう