• ベストアンサー

VBA超初心者です。

VBA超初心者です。 ファイル名の取得をしたいと思っています。 フォームからディレクトリを選択し、選択したディレクトリから ファイル名を取得し、OPENしたいのですが、 教えていただけないでしょうか。 すみません、超初心者がこの質問をするのはずうずうしいのかも知れませんが… Excel 2003(VB6.0)です。 何卒よろしくお願いいたしたします。

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

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

WEB照会すればわかると、既出回答者がおっしゃっているのは、下記のようなことです。 この方法を身につける努力をしないと、独学の場合は習得は難しい。回答に頼ると、今回限りのしのぎで勉強にならない。 フォームにテキストボックスを1つ設け、フォルダ名を指定させる。其れでフォルダを絞る。 その際、選択決定ボタンを1つ設ける必要があろう。ファイル形式も同時に選択してからボタンクリックさせるとよい。 そのフォルダ名を元に、そのフォルダのファイル名をリストアップする。 その際ファイル形式(エクセルやCSV形式)を指定されたものに絞る。それはフォルダのファイル名を見たとき、ファイルの拡張子で判る。 該当しないものは表示しない。この部分をVBのDir関数で検索して、リストボックスなどで独自にリストを作っても良いが、その際既存のダイアロウグを使えないか考える。OpenFilenameがある。 WEB照会「ファイル選択 VBA」(以下このキーワードなどで照会をお勧め、と言うこと)http://officetanaka.net/excel/vba/file/file02.htm WEB照会「ファイル名選択 ダイアロウグ」 http://www.officepro.jp/excelvba/book_new/index3.html fname = Application.GetOpenFilename ファイル形式を絞るのは WEB照会「application.getopenfilename 引数」 http://www.moug.net/tech/exvba/0060013.htm 複数に絞る WEB照会「ァイルフィルタ VBA」 >"テキスト ファイル (*.txt),*.txt,アドイン ファイル (*.xla),*.xla" http://hirokei-web.hp.infoseek.co.jp/VBA_Enma/Enma06.htm ーー Sub test01() Dim fname As String 'WEB照会「ファイル名選択 ダイアロウグ」 'http://www.officepro.jp/excelvba/book_new/index3.html 'fname = Application.GetOpenFilename 'ファイル形式を絞るのは 'WEB照会「application.getopenfilename 引数」 '>"テキスト ファイル (*.txt),*.txt,アドイン ファイル (*.xla),*.xla" fname = Application.GetOpenFilename("csv形式(xls形式),*.csv;*.xls") MsgBox fname 'フルパスで選択したファイル名が返る End Sub ーーー フォルダを指定するのは WEB照会「getopenfilename フォルダ指定」 http://hpcgi1.nifty.com/MADIA/VBBBS/wwwlng.cgi?print+200405/04050082.txt XXXXXXXX=Inputbox("フォルダ名=") ChDir "C:\"&xxxxxxxX ---- かっこよくやると、フォームのテキストボックスで指定するところを、InputBoxで受けると(手抜きですが) Sub test01() Dim fname As String Dim foldernm As String foldernm = InputBox("フォルダ名=") ChDir "C:\" & foldernm 'WEB照会「ファイル名選択 ダイアロウグ」 'http://www.officepro.jp/excelvba/book_new/index3.html 'fname = Application.GetOpenFilename 'ファイル形式を絞るのは 'WEB照会「application.getopenfilename 引数」 '>"テキスト ファイル (*.txt),*.txt,アドイン ファイル (*.xla),*.xla" fname = Application.GetOpenFilename("csv形式(xls形式),*.csv;*.xls") MsgBox fname '選択フルパスで返る ’あとはエクセルやCSVファイルをエクセルでオープンするコード調べること End Sub

gooood07
質問者

お礼

ご丁寧に、ありがとうございます。 時間がかかると思いますが、 回答を元に、色々やってみます。

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

その他の回答 (4)

  • layy
  • ベストアンサー率23% (292/1222)
回答No.5

http://www.asahi-net.or.jp/~zn3y-ngi/YNxv252.html#1 「超初心者がこの質問をするのはずうずうしい」 そうですね。 教えたところできちんとやってくれないとまた質問になりかねないし、 その繰り返しではなかなか上達は遅いです。 ほとんどがちょっとしたこと、ヒントを教える程度にしかなりません。 問題を解決するにはどこに情報があるか、その情報をいかに自分のものにするか、 初心者に教えなければならないことたくさんあります。 掲示板ではヒントをもらうだけに留めて最終結果は自分で考える、 要は回答を真似するだけで終わらせないで「考える」ことして欲しいですね。 今回の場合はVBAの対応になりそうなので、 デバッグの仕方等VBAを扱う知識の習得がまず前提です。 エクセルは使って1か月にも満たない程度でしょうか?。

gooood07
質問者

補足

ご指摘、ごもっともです。 VBAのデバッグは、何となくやれています。 とにかく自身がなく、周りは知っている人はおらず、 ネットで見ても思うような回答がなく(自分が分かってないからでしょうが…)、 困り果てて投稿いたしました。 エクセルは、一通りの機能は使えます。 質問すること自体、初心者でどう質問したら良いか分からず、 あのように大雑把な質問をしてしまいました。

全文を見る
すると、全ての回答が全文表示されます。
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

>VBA超初心者です。 初心者ゆえに、分からないからこそ、無茶な内容になると思います。 まず、用語からですが、フォームじゃなくて、Excelなら、UserFormと言ってください。 次に、 >フォームからディレクトリを選択し、選択したディレクトリから >ファイル名を取得し、OPENしたいのですが、 図を見ると、ComboBoxに入れたいような雰囲気ですが、うまくないですね。 #1さんのご指摘のように、 Dialogs(wdDialogFileOpen) やApplication.GetOpenFilename を使えばよいと思います。 オプションボタンで、Filter 部分を、*.xls, *.csv 、また、共有というのは、ネットワークだと思いますが、参照フォルダ切り替えればよいと思います。 今のところは、ComboBox などに入れようとは考えないことですね。手間が多くなります。 ファイル数が少なければともかく、数千となることもありますから、それでは管理が難しくなってしまいます。 それと、既存のものを直すなら、ネット検索してヒットするでしょうけれども、自分でイメージを考えたものは、概ね、ヒットしませんし、その分、数年の経験の応用力が必要になります。掲示板で聞いても、ほとんど回答は得られないと覚悟したほうがよいです。

gooood07
質問者

お礼

回答、ありがとうございます。 >ネット検索してヒットするでしょうけれども、自分でイメージを考えたものは、概ね、ヒットしませんし まったくその通りです。 でも、こうやって回答いただけるだけでも、 孤独に学習している私には、ありがたいです。 少しずつでも、がんばります。

全文を見る
すると、全ての回答が全文表示されます。
  • fujiponxx
  • ベストアンサー率32% (186/580)
回答No.2

フォルダ内のファイル名を取得 http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110_080.html 取得したファイル名をリストボックスにセットするのも必要ですが。 ファイルを開くっていっても、 ファイルの種類はなんでしょうか? テキストファイル?EXCEL? 「VBA ファイルを開く」で検索すればいろいろ出てきますよ。 ずうずうしいとはいいませんが、 まずGoogleとかの検索方法をマスターする方が先だと思いますね。 どんなコードも大抵WEBに出てますので。

gooood07
質問者

お礼

回答、ありがとうございます。 質問の仕方が悪くて、本当申し訳ないです。 ネットでも検索はしたのですが、 結局のところ、知識がないので応用が利かないのです。

全文を見る
すると、全ての回答が全文表示されます。
  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.1

ずうずうしいかどうかはさておき、「どういう風に」ファイル名を取りたいのかが全く見えません。 なんとなくApplication.GetOpenFilenameでいいのか?という気はするのですが。

gooood07
質問者

お礼

回答いただき、ありがとうございます。 質問の仕方が悪くて、本当すみません。 次回からは、もう少し具体的に質問してみます。

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

関連するQ&A

  • VBとVBAとUSB-IOについて

    エクセルVBAはそこそこ組めるのですが、VBというのは最近知りました。そこで質問があるのですが、USB-IOを用いた自作機器をエクセルのVBAで操作できるのでしょうか? あるいはVBまたはABでセンサーから受け取った値を取得したとして、エクセルVBAのユーザーフォームに表示させるということは可能なのでしょうか? 初心者どころか興味があって本を買ってみただけの者ですが、ご教授いただけませんでしょうか。

  • VBAでドラッグ・アンド・ドロップ

    エクスプローラからファイルを選択して、ワードもしくはエクセルにD&Dしファイル名を取得したいと思います。 VBだとOleDragDropでいけるようですが、VBAにはこのイベントがありません。 ということは、無理ってことなのでしょう赤?

  • エクセルVBA ユーザーフォームをオブジェクトとしてセットする書き方?

    いつもご回答頂きありがとうございます。 エクセルVBAでユーザーフォームをオブジェクト変数として セットする書き方を教えていただけないでしょうか? エクセルVBAでAファイルとBファイルがあり AファイルのVBAからBファイルを開いて、データを取得し Aファイルに記入していく。と言うVBAを作成しました。 ただ、BファイルにはopenイベントでBファイルに作成された ユーザーフォームがloadされるようになっていて、 AファイルからBファイルを開けたとき、そのユーザーフォームを 消したいのですが、消す方法が分かりません。 AファイルからBファイルをopenメソッドを用いたあと、ユーザー フォームを消せばいいと思うのですが、書き方が分からず困って おります。 オブジェクトとしてセットして、そのオブジェクトをunloadすれば いいかな?とか思っているのですが、セットの仕方もわからず、、、 宜しくお願いいたします。 それぞれのファイル名を「ファイルA」、「ファイルB」、 ユーザーフォーム名を「UserFormB」としたとき、どのように 書けばよろしいでしょうか?

  • VBでエクセルをOPEN

    こんばんわ。VB初心者です。 VBのフォームにあるボタンを押すと、VBで作成したexeファイルのディレクトリを調べて、そこにエクセルファイル(****.xls)があるかチェックして、なかったらエクセルを起動しそのエクセルファイルをOPENしたいのですが、うまくオブジェクトがとれてなかったり、ディレクトリがちゃんと調べれてなかったりで、うまく動きません。 それから、エクセルを操作した最後にエクセルファイルをcloseしてエクセルアプリを終了させたいのですが、、それもうまく動きません。 どなたか、詳しいかたお手数ですがレスよろしくお願いいたします。

  • Excel VBAで初心者です。

    Excel VBAで初心者です。 他のExcelファイルのワークシートのデータを選択して取得したいのですが Aファイルのシート1のセルA3に入力されている月が4~11と入力されていた場合 ファイル名「B」を、月が6~1が入力されていた場合、ファイル名「C」のデータを 見にいき、更に Aファイルのシート1のセルA1に入力されている西暦と、セルA3に入力されている月が B又はCファイルのシート名[西暦(月)]もしくは平成○年○月度と表示されている(2001/8/1)月 からマイナス1したものとマッチさせて、あったらその中のセルデータを Aファイルに表示させたいと思っています。 今はファイル名と場所を強制的に開くように指示してある状態ですが、 上記の希望のように選択してデータを表示するようにしたいのです。 VBAでは無理なのでしょうか? もしやり方がありましたら、ご指導いただきたくお願い申し上げます。

  • VBAからVB6への移行

    エクセルVBAでフォームを作成して使用していたものがあります。 諸般の事情でエクセルVBAからVB6sp6に移行することになりました。 エクセルVBAからフォーム、クラス、標準モジュールをエクスポートして、VB6のプロジェクトへインポートしました。 エクセルVBA上でフォームだったものがVB6ではデザインに変わりました。 これをVB6のフォームにしたいと思い、VB6でフォームを新規作成してデザインのフォームから各コントロール(ボタン等)をコピーペーストしようとしたところ、できませんでした。 1.フォームをVB6で作り直すしか方法が無いのでしょうか。 2.どのような理由でコピーペーストができなくなっているのでしょうか。 よろしくお願いします。

  • VBAを覚えたいのですがさっぱりわかりません、初心者です。

    VBAを覚えたいのですがさっぱりわかりません、初心者です。 VBAを活用したいと思っておりますが、実際作るとなると、 何から覚えれば良いのか?何から作成していけば良いのか分かりません。 単純にエクセルから「Visual Basic Editor」を選択し、 ユーザーフォームの挿入からフォームやコマンドボックスを使用して動作画面を作成し、 コマンドボタンを押したら『if文』などを入力していけば良いと考えていたのですが、 特に”マクロ”についてさっぱり分かりません。 サイトで検索をして内容を読んでも本を読んでも、載っていることは出来ても、 自分がしたいことについては良く分からず、 『一番最初に何をすれば良いのか』すら分かりません。 文章の「起・承・転・結」ではありませんが、 どのように段階を経て作成していくのが一番分かり易いのでしょうか?

  • VBAからVBへ移行

    エクセルのVBAで作ったフォームをVBのフォームに移行する方法はないのでしょうか? VBAで作ったフォームをエクスポートしてVBに取り込むとデザインとして取り込まれてしまいました。 どなたか教えてください。よろしくお願い致します。

  • エクセルVBAで相対パスでファイルを読み込めない

    こんにちは。 標題の通りです。 現在、エクセルのVBAを使用してちょっとしたものを作成しているのですが、 相対パスを使用して他のファイル(DATファイル)を読みこませようとしています。 しかし、どうにもうまくいかなかったのです。 最初は問題なく読み込めていましたが、あるとき突然パスが見つかりませんとの エラーメッセージが出るようになりました。 結局、開いているブックの絶対パスを取得するという方法にして思っている結果 は得られることができましたが、どうにも不思議なので質問しました。 コードは以下のように記述していました。 Open "..\ディレクトリ\ファイル.dat" For Input As #1 上記ではだめなのでしょうか? VBでは問題なかったような気がします。

  • VBAで非表示のブックからシートの名前だけ抽出する方法

    WindowsとExcel2003を使用しています。 (1)まず、VBAでフォームを作成しその上にリストボックスを1つ作ります。 (2)そのリストボックス内に自フォルダにあるファイル名の一覧を表示します。 (3)その一覧から1つだけエクセルファイルを選択し、実行ボタンをクリックすると新しいフォームが開きます。 (4)そのフォームのリストボックス内に、選択したファイル内の全シートの名前を表示させようとしています。 (3)までは何とか作成することが出来て、動作しています。 (4)で、選択したエクセルファイルのシート名を取得するときに、当該bookを開くことなく、もしくは使用者には選択したbookが立ち上がったことを気づかせずにシート名だけを取得したいと考えていますが、この方法がわかりません。 さらには、取得したシート名から1つを選択し、それを変数に格納して使おうと思っています。 FileSystemObjectというのを使用するのでしょうか? ExcelVBAをはじめて触るため、手探り状態です。情報が不足している場合はすぐに補足します。 ご存知の方、ご教示よろしくお願いします。