コモンダイアログで複数ファイル選択をするには?


nezukou  2005-05-14 09:12:20  No: 89824

VB6のコモンダイアログで複数ファイル選択ができているのですが、
選択数が多いと2回目以降、ダイアログが開かず困っています。
.MaxFileSize = 32000
と与えると、80ファイルくらいは全てファイル名を取得できるのですが、
2回目以降、ダイアログが開きません。
.MaxFileSize = 256
とすると、一度に選択できるファイル数は10ファイル程度に減りますが、
取得に失敗しても成功しても、2回目以降、ダイアログは開きます。
何か処理が足りないのでしょうか。
以下、抜粋ソースです。
アドバイスをお願い致します。
よろしくお願い致します。

    On Error GoTo CancelError
    With FormCFGc(0).CommonDialog1
        .CancelError = True
        .DefaultExt = "bmp"
        .Filter = "ビットマップ ファイル (*.bmp)|*.bmp"
        
        .Flags = cdlOFNHideReadOnly Or cdlOFNFileMustExist _
                    Or cdlOFNAllowMultiselect Or cdlOFNExplorer
        
        .MaxFileSize = 32000
        .ShowOpen
        multiFile = .FileName
    End With


ねろ  2005-05-16 18:47:25  No: 89825

>選択数が多いと2回目以降、ダイアログが開かず困っています。
開かないと言う状態は具体的には、どのような状態でしょうか?
エラーになっているのであれば、 CancelErrorに次のような
コードを記述して、エラーの状態を書き出せてみて下さい。
MsgBox ("ErrNo = " & Err.Number & ":" & Err.Description)


GOD  2005-05-16 18:53:40  No: 89826

提示コードをコピペして実験しましたが私のところでは開きましたよ。
1回目に1000以上、26KB分のファイル名を指定したけど2回目も大丈夫
みたいでした。(System32の中身を指定してテスト)
VBはサービスパックを適用してますか?
一度目に指定したファイルのサイズは何バイト分くらいあるのでしょうか。


じゃんぬねっと  URL  2005-05-16 19:36:32  No: 89827

8192 文字以内でないとダメだったかな。


nezukou  2005-05-18 08:52:02  No: 89828

皆様ご回答ありがとうございます。
追加回答頂けますと幸いです。
よろしくお願い致します。

to ねろ様
ダイアログ自体が表示されない状態です。
エラー状態は、「20477:ファイル名が不正です」でした。
これが1回目多数選択して読込み、2回目読み込もうとすると出ます。

to GOD様
3年程前に買ったVisual Studioからインストールしただけで、
サービスパックは適用していないと思います。
どこで入手可能でしょうか。
適用しないとまずいでしょうか。
一度目に指定したファイルのサイズは600KB程、
ファイル名のサイズとしては80ファイル×8文字で、
640バイト程です。
MaxFileSizeはファイル名確保のサイズだと認識しているのですが、
誤りでしょうか。


ひろ  2005-05-18 21:54:18  No: 89829

SP5かSP6を適用しましょう。

http://www.microsoft.com/japan/msdn/vstudio/downloads/

SP6は古いOSでの動作に関してトラブルの話があるので注意して下さい。

ちょっと調べたところ、これと症状が似ています。OSは何でしょうか?
http://support.microsoft.com/default.aspx?scid=kb;en-us;139972


GOD  2005-05-18 22:35:08  No: 89830

> MaxFileSizeはファイル名確保のサイズだと認識しているのですが、誤りでしょうか。
>
この認識であってます。

私の質問に誤り(抜け)がありました。
誤:一度目に指定したファイルのサイズは何バイト分くらいあるのでしょうか。
正:一度目に指定したファイル名のサイズは何バイト分くらいあるのでしょうか。


ひろ  2005-05-22 00:50:23  No: 89831

昔の資料によると選択したファイル名文字列の長さの合計が MaxFileSize を超えた場合にもこのエラーがでる場合があるとのこと。VB6でも同じなのかどうかは確認できませんでしたが。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加