過去ログ

                                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です。

ご存知の方がいらしたら、教えてください。
どうぞよろしくお願いいたします。
 ───────────────────────────────────────  ■題名 : ちゃんと返ってくるんですが・・・・  ■名前 : ichinose  ■日付 : 02/10/22(火) 13:01  -------------------------------------------------------------------------
   ▼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です。
現象が起きるようなオペレーティングが知りたいです。
 ───────────────────────────────────────  ■題名 : Re:ちゃんと返ってくるんですが・・・・  ■名前 : Taka-mk2  ■日付 : 02/10/22(火) 19:12  -------------------------------------------------------------------------
   ▼ichinose さん:

こんばんはぁ。
結局、まだ解決しておりません。
コード、ありがとうございました。
試したところ、レスにありましたコードは正しく動作いたします。
また、他にサンプルとして作ったものも、正しく動くのですよね。

手順としては、
選んだファイル(XLSファイル)を複数・単数選択する

選んだファイルを一つ開く。
その選択したファイルから元のファイルに情報を転記。
ファイルを閉じる。

この3つを選択したファイルがなくなるまで繰り返す、というものです。
一度この動作を行うと、二度目以降は配列で返ってこなくなります。

返ってこないのですが、元のファイルで転記した情報をすべて消す(記入されているすべてのセルをDELETEする)と、再び配列で返ってきます。
ただし、情報をクリアしない限りは配列で返ってきません。

正直、お手上げです。
コードを乗せようにもそれにはちょっと差し障りがありそうなので、
こういう形にしました。

何か、心あたりがあればよろしくお願いいたします。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 243