Page 243 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼GetOpenFilename関数が配列を返してくれない Taka-mk2 02/10/22(火) 12:42 ┗ちゃんと返ってくるんですが・・・・ ichinose 02/10/22(火) 13:01 ┗Re:ちゃんと返ってくるんですが・・・・ Taka-mk2 02/10/22(火) 19:12 ─────────────────────────────────────── ■題名 : GetOpenFilename関数が配列を返してくれない ■名前 : Taka-mk2 ■日付 : 02/10/22(火) 12:42 -------------------------------------------------------------------------
こんにちはぁ。 質問させていただきます。 GetOpenFilename関数を使用して、ファイルを開くロジックを組んでいます。 コマンドボタンを押したときに、 vntFile はVariant型で、プロシージャ内でDimによって宣言しています。 vntFile = Application.GetOpenFilename("ExcelFile(*.xls),*.xls", 1, "Load Trade", , True) If Not IsArray(vntFile) Then Exit Sub で、複数のファイルを選択できるようにしているのです。 このボタンの動作は1度目はきちんと配列を返してくれるのです。 ところが、一度ファイルを開いた後、もう一度ボタンを押してファイルをロードしようとすると、vntFileに配列が返ってきません。 ファイルを複数選択することはできますが、返ってくるのは一つのファイルのフルパスだけです。 どうしてこのような現象が起きてしまうのでしょうか? また、回避策はありますでしょうか? Excelは2000のSR-1です。 ご存知の方がいらしたら、教えてください。 どうぞよろしくお願いいたします。 |
▼Taka-mk2 さん: こんにちは。 >質問させていただきます。 > >GetOpenFilename関数を使用して、ファイルを開くロジックを組んでいます。 >コマンドボタンを押したときに、 > >vntFile はVariant型で、プロシージャ内でDimによって宣言しています。 > >vntFile = Application.GetOpenFilename("ExcelFile(*.xls),*.xls", 1, "Load Trade", , True) >If Not IsArray(vntFile) Then Exit Sub > >で、複数のファイルを選択できるようにしているのです。 >このボタンの動作は1度目はきちんと配列を返してくれるのです。 >ところが、一度ファイルを開いた後、もう一度ボタンを押してファイルをロードしようとすると、vntFileに配列が返ってきません。 >ファイルを複数選択することはできますが、返ってくるのは一つのファイルのフルパスだけです。 > >どうしてこのような現象が起きてしまうのでしょうか? >また、回避策はありますでしょうか? >Excelは2000のSR-1です。 > >ご存知の方がいらしたら、教えてください。 >どうぞよろしくお願いいたします。 標準モジュールに以下のコードで走らせて見たんですが、 '=================================================== Dim vntfile '======================================================================= Sub test() vntfile = Application.GetOpenFilename("ExcelFile(*.xls),*.xls", 1, "Load Trade", , True) If Not IsArray(vntfile) Then Exit Sub For i = LBound(vntfile) To UBound(vntfile) MsgBox vntfile(i) Next End Sub 何回か繰り返してみたんですが、ちゃんと配列に返ってきています。 EX2000 SR-1です。 現象が起きるようなオペレーティングが知りたいです。 |
▼ichinose さん: こんばんはぁ。 結局、まだ解決しておりません。 コード、ありがとうございました。 試したところ、レスにありましたコードは正しく動作いたします。 また、他にサンプルとして作ったものも、正しく動くのですよね。 手順としては、 選んだファイル(XLSファイル)を複数・単数選択する 選んだファイルを一つ開く。 その選択したファイルから元のファイルに情報を転記。 ファイルを閉じる。 この3つを選択したファイルがなくなるまで繰り返す、というものです。 一度この動作を行うと、二度目以降は配列で返ってこなくなります。 返ってこないのですが、元のファイルで転記した情報をすべて消す(記入されているすべてのセルをDELETEする)と、再び配列で返ってきます。 ただし、情報をクリアしない限りは配列で返ってきません。 正直、お手上げです。 コードを乗せようにもそれにはちょっと差し障りがありそうなので、 こういう形にしました。 何か、心あたりがあればよろしくお願いいたします。 |