access 64bit でファイルダイアログが開けない
Q&A
解決したいこと
マイクロソフトアクセスでファイルダイアログを開き、ファイル名を取得しほかの処理を行うという既存のアプリケーションを修正しています。
アクセス32bitで動かしていたものを64bitで動かせるように修正しています。
アクセス2010の32bitで開発していて、開発環境ではファイルダイアログは開かれるのですが、本番環境のアクセス2016の64bitではファイルダイアログを開く処理が動かずに無視されてしまいます。
発生している問題・エラー
本番環境のアクセス2016の64bitではファイルダイアログを開く処理が動かずに無視されてしまいます。
該当するソースコード
Private Sub cmdFileOpenCommonDialog_Click()
Dim objComDlg As clsCommonDialog97
Dim intret
tmpdir = Application.CurrentProject.Path
If Right(tmpdir, 1) <> "\" Then
tmpdir = tmpdir & "\"
End If
If IsNull(tmpdir) Or IsEmpty(tmpdir) Then
tmpdir = INIT_DIR
End If
Set objComDlg = New clsCommonDialog97
With objComDlg
.hWnd = Application.hWndAccessApp
.DialogTitle = "データファイル指定"
.FileName = ""
.Filter = "テキスト ファイル(*.txt)|*.txt|すべてのファイル(*.*)|*.*"
.FilterIndex = 1
.InitDir = tmpdir
'.flags = cdlOFNHideReadOnly Or cdlOFNFileMustExist
.FlagHideReadOnly = True
.FlagFileMustExist = True
End With
objComDlg.ShowOpen
↑ここのShowOpenが64bitで動きません
If objComDlg.FileName <> "" Then
FILE_NAME.SetFocus
FILE_NAME.Text = objComDlg.FileName
End If
End Sub
自分で試したこと
参照した参照設定に Private Declare PtrSafe Function にしました。
変数、構造体の変更点が記されたドキュメントどおりに変更しました。
https://hatena19.com/Office2010Win32API_PtrSafe/Win32API_PtrSafe.TXT
構造体の初期化を見直しました。
アクセスに関しては無知同然なので教えていただけるとありがたいです。
1 likes