|
▼よっぴ さん:
こんにちは。
> なぜか『8188』Byte以上になるとそれ以降が削除されます。
こちらでも事象が再現しました。
(WinVista, Access2003)
> (スペック)
> WinXP
> Access2003
上記の環境に依存して良いのであれば、
Office付随の FileDialog オブジェクトを使うのが楽そうですね。
Sub Sample2()
'※要参照 Microsoft Office 11.0 Object Library
Dim objFD As FileDialog
Dim varItem As Variant
Dim buf As Variant
Dim aryFileName As Variant
Set objFD = Application.FileDialog(msoFileDialogFilePicker)
With objFD
.Title = "データインポート"
.Filters.Clear
.Filters.Add "Excelファイル(*.xls)", "*.xls"
.Filters.Add "すべてのファイル", "*.*"
.FilterIndex = 1
.InitialView = msoFileDialogViewDetails
.InitialFileName = CurrentProject.Path
.AllowMultiSelect = True
If .Show = -1 Then
For Each varItem In .SelectedItems
buf = buf & "," & varItem
Next varItem
Else
Exit Sub
End If
End With
aryFileName = Split(Mid(buf, 2), ",")
Set objFD = Nothing
End Sub
8188 という数値が 2047 * 4 であり
何かの制限に引っかかってそうだと思われますが、
WizHook に関しては非公開なクラスの為
Microfost のサイトを見てもヘルプや技術情報がありません。
WizHook を使わなければいけない理由が特にないのでしたら
他方法を使う事をおすすめします。
Ac2000 が混在環境で存在してしまうのであれば
API関数 の GetOpenFileNameA あたりをWeb検索されてみて下さい。
|
|