Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


11713 / 13646 ツリー ←次へ | 前へ→

【14594】フォルダー内の全てのファイルを選択する方法 初心者1号 04/6/2(水) 16:28 質問[未読]
【14595】Re:フォルダー内の全てのファイルを選択す... ちゃっぴ 04/6/2(水) 16:45 回答[未読]
【14597】Re:フォルダー内の全てのファイルを選択す... 初心者1号 04/6/2(水) 17:35 お礼[未読]
【14599】Re:フォルダー内の全てのファイルを選択す... ちゃっぴ 04/6/2(水) 17:46 回答[未読]
【14600】Re:フォルダー内の全てのファイルを選択す... 初心者1号 04/6/2(水) 17:52 お礼[未読]

【14594】フォルダー内の全てのファイルを選択する...
質問  初心者1号  - 04/6/2(水) 16:28 -

引用なし
パスワード
   フォルダー内の全てのファイルを開く、という指示をかけたいのですが、どのようにすればよいですか?
また、一度開いたファイルを全て閉じるには(アプリケーションを終了させないで)どうすればよいですか?

過去ログに、全てのファイルを開くという題名で同じような質問があったのですが、これは、表示させるもので、開くものではありませんでした。

ほんとに初心者なので、苦しんでいます。。。
よろしくお願いいたします。

【14595】Re:フォルダー内の全てのファイルを選択...
回答  ちゃっぴ  - 04/6/2(水) 16:45 -

引用なし
パスワード
   手作業でしたら、対象フォルダを検索して、全選択して実行

VBAなら、Dir関数かFileSystemObjectで再帰

Win32APIならFindFirstFileを再帰でまわしてやれば出来ます。

ただ、全ファイルを一度に開くとメモリ不足で落ちても知りませんよ。

1個ずつ処理してやるほうがいいと思います。

> また、一度開いたファイルを全て閉じるには
>(アプリケーションを終了させないで)どうすればよいですか?

For Each〜NextステートメントでWorkBooksをループ
各オブジェクトに対し、Closeメソッドを実行すればいいのでは?

【14597】Re:フォルダー内の全てのファイルを選択...
お礼  初心者1号  - 04/6/2(水) 17:35 -

引用なし
パスワード
   ▼ちゃっぴ さん:

早々の回答ありがとうございます!
助かります〜〜。。

>VBAなら、Dir関数かFileSystemObjectで再帰

Dir関数を検索してみたのですが、初心者には少しわかりづらく、、
こういうプログラムでしょうか??(いろんなものを切り貼りしてます。。)

  Dim varRet     As Variant
  Dim strPath     As String
  
  strPath = "C:Data\"
  ChDrive strPath
  ChDir strPath

  varRet = Application.GetOpenFilename("CSVファイル (*.csv),*.csv")
  If VarType(varRet) = vbBoolean Then
    MsgBox "キャンセルされました"
  Else
    Workbooks.Open filename varRet As Workbook ←
  End If

←でファイルを開きたいのですが、どうすればよいのでしょうか。。プログラム弱いんです。。


>> また、一度開いたファイルを全て閉じるには
>>(アプリケーションを終了させないで)どうすればよいですか?
>
>For Each〜NextステートメントでWorkBooksをループ
>各オブジェクトに対し、Closeメソッドを実行すればいいのでは?

同じく何かサンプルがあると大変助かります!!

【14599】Re:フォルダー内の全てのファイルを選択...
回答  ちゃっぴ  - 04/6/2(水) 17:46 -

引用なし
パスワード
   >  Dim varRet     As Variant
>  Dim strPath     As String
>  
>  strPath = "C:Data\"
>  ChDrive strPath
>  ChDir strPath
>
>  varRet = Application.GetOpenFilename("CSVファイル (*.csv),*.csv")
>  If VarType(varRet) = vbBoolean Then
>    MsgBox "キャンセルされました"
>  Else
>    Workbooks.Open filename varRet As Workbook ←
>  End If

GetOpenFileNameですと、引数MulitiSelectを指定することにより、
フォルダ直下のファイルを全選択できますが、サブフォルダに格納されているファイルは対応できません。

ヘルプを調べてみましょう!


>    Workbooks.Open filename varRet As Workbook 
ちなみにこれは何でしょう?
Workbooks.Open filename:=varRet
の間違いでは?

VBAの基本構文わかっていらっしゃらないようなので、
入門書を購入し、基礎から勉強されることをお勧めします。

近道はありませんよ。

【14600】Re:フォルダー内の全てのファイルを選択...
お礼  初心者1号  - 04/6/2(水) 17:52 -

引用なし
パスワード
   ▼ちゃっぴ さん:

ありがとうございます〜〜。。
実は、基礎構造、まったく知らずに見よう見まねでやってるんです。。
確かに近道はないですよね。。。でもネットでなんとか解決したいな。。。。なんて。初心者にありがち。。。

>GetOpenFileNameですと、引数MulitiSelectを指定することにより、
>フォルダ直下のファイルを全選択できますが、サブフォルダに格納されているファイルは対応できません。
>
>ヘルプを調べてみましょう!

そうしてみます!ありがとうございます。

>>    Workbooks.Open filename varRet As Workbook 
>ちなみにこれは何でしょう?
>Workbooks.Open filename:=varRet
>の間違いでは?

まさしくそうです。
その後動かないので、あれ?と思ったら、構造が変でした。

ヒントが大変役立ちました。
ありがとうございます〜〜。

11713 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free