32 ビット Microsoft Office を実行している 64 ビット マシン (Windows 7) でアプリケーションを構築しました。クライアント マシンは 64 ビット Windows と 64 ビット オフィスです。
最初は comdlg32.dll に問題がありましたが、PtrSafe キーワードが含まれていました。次の問題は、クライアント マシンにインストールした IPCONFIG.dll が見つからないことでした。
これで問題なくコンパイルできましたが、ファイル保存ダイアログ (Ken Getz によるコード) を使用しようとしています。実際のダイアログを開くのをスキップしているようで、実行時エラー 2522 (ファイル名が必要) が表示されます。どんな助けでも感謝します。これは私が使用しているコードです (Ken Getz の関数を参照しています):
Function exportData_Click()
Dim strFilter As String
Dim strSaveFileName As String
Dim The_Year As Variant
Dim ctlCurrentControl As Control
Dim queryName As String
'Get the name of the control button clicked (corresponds to query name to be run)
Set ctlCurrentControl = Screen.ActiveControl
queryName = ctlCurrentControl.Name
'Get combobox value and assign relavent values to The_Year
The_Year = Forms![Extract Data]!Extract_Year.value
'Change the year from a variant to what we need in the SQL
If The_Year Like "20*" Then
The_Year = CInt(The_Year)
'MsgBox The_Year & "Data Type = " & VarType(The_Year)
Else: The_Year = "*"
'MsgBox The_Year & "Data Type = " & VarType(The_Year)
End If
'Set queryYear variable
setYear (The_Year)
'Check the variable is correct
'MsgBox getYear()
'Open the Save as Dialog to choose location of query save
strFilter = ahtAddFilterItem("Excel Files (*.xlsx)", "*.xlsx")
strSaveFileName = ahtCommonFileOpenSave( _
openFile:=False, _
Filter:=strFilter, _
Flags:=ahtOFN_OVERWRITEPROMPT Or ahtOFN_READONLY)
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, queryName, strSaveFileName
End Function
デバッグは次の行を指します。
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, queryName, strSaveFileName