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
>選択数が多いと2回目以降、ダイアログが開かず困っています。
開かないと言う状態は具体的には、どのような状態でしょうか?
エラーになっているのであれば、 CancelErrorに次のような
コードを記述して、エラーの状態を書き出せてみて下さい。
MsgBox ("ErrNo = " & Err.Number & ":" & Err.Description)
提示コードをコピペして実験しましたが私のところでは開きましたよ。
1回目に1000以上、26KB分のファイル名を指定したけど2回目も大丈夫
みたいでした。(System32の中身を指定してテスト)
VBはサービスパックを適用してますか?
一度目に指定したファイルのサイズは何バイト分くらいあるのでしょうか。
8192 文字以内でないとダメだったかな。
編集 削除皆様ご回答ありがとうございます。
追加回答頂けますと幸いです。
よろしくお願い致します。
to ねろ様
ダイアログ自体が表示されない状態です。
エラー状態は、「20477:ファイル名が不正です」でした。
これが1回目多数選択して読込み、2回目読み込もうとすると出ます。
to GOD様
3年程前に買ったVisual Studioからインストールしただけで、
サービスパックは適用していないと思います。
どこで入手可能でしょうか。
適用しないとまずいでしょうか。
一度目に指定したファイルのサイズは600KB程、
ファイル名のサイズとしては80ファイル×8文字で、
640バイト程です。
MaxFileSizeはファイル名確保のサイズだと認識しているのですが、
誤りでしょうか。
SP5かSP6を適用しましょう。
http://www.microsoft.com/japan/msdn/vstudio/downloads/
SP6は古いOSでの動作に関してトラブルの話があるので注意して下さい。
ちょっと調べたところ、これと症状が似ています。OSは何でしょうか?
http://support.microsoft.com/default.aspx?scid=kb;en-us;139972
> MaxFileSizeはファイル名確保のサイズだと認識しているのですが、誤りでしょうか。
>
この認識であってます。
私の質問に誤り(抜け)がありました。
誤:一度目に指定したファイルのサイズは何バイト分くらいあるのでしょうか。
正:一度目に指定したファイル名のサイズは何バイト分くらいあるのでしょうか。
昔の資料によると選択したファイル名文字列の長さの合計が MaxFileSize を超えた場合にもこのエラーがでる場合があるとのこと。VB6でも同じなのかどうかは確認できませんでしたが。
編集 削除