Excel VBA質問箱 IV

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

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


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

【32576】ループでファイルのクローズ tetsu 05/12/18(日) 15:29 質問[未読]
【32580】Re:ループでファイルのクローズ Kein 05/12/18(日) 15:48 回答[未読]
【32581】Re:ループでファイルのクローズ かみちゃん 05/12/18(日) 15:50 回答[未読]
【32593】Re:ループでファイルのクローズ tetsu 05/12/18(日) 22:18 お礼[未読]

【32576】ループでファイルのクローズ
質問  tetsu  - 05/12/18(日) 15:29 -

引用なし
パスワード
   初めまして。tetsuと申します。
2点質問があるので、どなたか教えていただけないでしょうか。

1.定数の宣言時に、定数の中に変数を入れることは出来ないのでしょうか。

Dim i as Integer
Const A as String = "変数Iは" & i & "です。"

といったようにして、プロシージャの中で定数Aを使いたいのですがエラーがでます。やはり定数の中に変数を入れることは不可能なのでしょうか。

2.ループでオープンしたファイルをクローズする方法がわかりません。

Dim t_path = Variant
Dim i as Integer

With Application
   t_path = .GetOpenFilename("CSVファィル(*.csv),*.csv", , , , True)
End With

上のコードで、複数のファイルを選択した後に、

For i = LBound(t_path) To UBound(t_path)

Workbooks.Open t_path(i)

 処理

Workbooks.Close t_path(i)

で、一つずつファイルを開き、処理を終了した後にクローズしたいのですが、"Workbooks.Close t_path(i)"の部分が上手くいきません。他に色々ためしたのですが、だめでした。どなたか教えていただけないでしょうか。よろしくお願いします。

【32580】Re:ループでファイルのクローズ
回答  Kein  - 05/12/18(日) 15:48 -

引用なし
パスワード
   Workbooks.Open で開いたあと、他のブックをアクティブにしていなければ

ActiveWorkbook.Close False

などとすれば良いのです。
ブックを開く→自動的にそのブックがアクティブになる。という仕様を利用している
わけです。

【32581】Re:ループでファイルのクローズ
回答  かみちゃん  - 05/12/18(日) 15:50 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>1.定数の宣言時に、定数の中に変数を入れることは出来ないのでしょうか。

できません。

>For i = LBound(t_path) To UBound(t_path)
>
>Workbooks.Open t_path(i)
>
> 処理
>
>Workbooks.Close t_path(i)

MsgBox t_path(i)
として、t_path(i)の内容を確認してみてください。
フルパスになっていると思います。そのため、Closeができません。

そこで、以下のようにしてはいかがでしょうか?

Dim WB As Workbook
For i = LBound(t_path) To UBound(t_path)
 Set WB = Workbooks.Open(t_path(i))
 '処理
 WB.Close
 '〜省略〜

【32593】Re:ループでファイルのクローズ
お礼  tetsu  - 05/12/18(日) 22:18 -

引用なし
パスワード
   >Dim WB As Workbook
>For i = LBound(t_path) To UBound(t_path)
> Set WB = Workbooks.Open(t_path(i))
> '処理
> WB.Close
> '〜省略〜

できました!こういう方法があるんですね。
勉強になりました。ありがとうございました!

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