AutoCAD VBA调用Windows API启动FileDialog时出现错误449“参数不可选”。
创始人
2024-09-22 18:31:59
0

当使用AutoCAD VBA调用Windows API启动FileDialog时,可能会遇到错误449“参数不可选”。该错误通常发生在调用GetOpenFileName或GetSaveFileName函数时,这些函数用于打开文件选择对话框或保存文件对话框。

以下是解决该问题的一种方法,包括代码示例:

  1. 确保正确引用Windows API:

    • 在VBA编辑器中,点击“工具”菜单,选择“引用”。
    • 在“引用”对话框中,找到并勾选“Windows API”或“Microsoft Windows Common Controls”。
    • 点击“确定”保存更改。
  2. 在代码中使用Declare语句引入所需的API函数:

Private Declare PtrSafe Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
Private Declare PtrSafe Function GetSaveFileName Lib "comdlg32.dll" Alias "GetSaveFileNameA" (pOpenfilename As OPENFILENAME) As Long
  1. 创建OPENFILENAME结构体并初始化相关参数:
Private Type OPENFILENAME
    lStructSize As Long
    hwndOwner As Long
    hInstance As Long
    lpstrFilter As String
    lpstrCustomFilter As String
    nMaxCustFilter As Long
    nFilterIndex As Long
    lpstrFile As String
    nMaxFile As Long
    lpstrFileTitle As String
    nMaxFileTitle As Long
    lpstrInitialDir As String
    lpstrTitle As String
    flags As Long
    nFileOffset As Integer
    nFileExtension As Integer
    lpstrDefExt As String
    lCustData As Long
    lpfnHook As Long
    lpTemplateName As String
End Type

Private Const OFN_FILEMUSTEXIST As Long = &H1000
Private Const OFN_HIDEREADONLY As Long = &H4
  1. 在需要弹出文件对话框的地方,调用API函数并处理返回值:
Dim ofn As OPENFILENAME
Dim result As Long

' 初始化OPENFILENAME结构体
ofn.lStructSize = Len(ofn)
ofn.hwndOwner = Application.hWnd
ofn.lpstrFilter = "所有文件 (*.*)|*.*"
ofn.nFilterIndex = 1
ofn.lpstrFile = String(260, 0)
ofn.nMaxFile = Len(ofn.lpstrFile) - 1
ofn.lpstrFileTitle = ofn.lpstrFile
ofn.nMaxFileTitle = ofn.nMaxFile

' 调用GetOpenFileName函数显示文件选择对话框
result = GetOpenFileName(ofn)

' 处理返回值
If result <> 0 Then
    ' 用户选择了文件,继续处理
    MsgBox "选择的文件路径:" & ofn.lpstrFile
Else
    ' 用户取消选择
    MsgBox "用户取消了文件选择"
End If

通过按照上述步骤,您应该能够解决AutoCAD VBA调用Windows API启动FileDialog时出现错误449“参数不可选”的问题。请注意,代码示例中的文件选择对话框的参数可以根据您的需求进行更改。

相关内容

热门资讯

十分钟带你了解!欢乐联盟免费辅... 十分钟带你了解!欢乐联盟免费辅助(辅助挂)教程辅助外挂开挂辅助安装(一直真的有挂)>>您好:软件加薇...
透视透视"微信小程序... 透视透视"微信小程序游戏破解微乐游戏"开挂(透视)辅助插件(一直真的有挂)-哔哩哔哩;一、微信小程序...
9分钟带你了解!决战卡五星必赢... 您好:这款决战卡五星必赢神器游戏是可以开挂的,确实是有挂的,很多玩家在这款决战卡五星必赢神器游戏中打...
透视智能ai"顺欣茶... 《透视智能ai"顺欣茶楼辅助视频"开挂(透视)辅助插件(一直真的有挂的)-哔哩哔哩》 顺欣茶楼辅助视...
第3分钟带你了解!决胜麻架胡易... 第3分钟带你了解!决胜麻架胡易辅助(辅助挂)2024教程外挂开挂辅助插件(其实是有挂);无需打开直接...
盘点一款"边锋老友辅... 盘点一款"边锋老友辅助器"开挂(透视)辅助软件(原来确实是有挂)-哔哩哔哩;边锋老友辅助器最新软件透...
五分钟带你了解!九游破解辅助插... 五分钟带你了解!九游破解辅助插件官网(透视挂)透视app外挂开挂辅助脚本(原来真的有挂);无需打开直...
透视私人局"瓜瓜丰城... 透视私人局"瓜瓜丰城双剑旧版攻略"开挂(透视)辅助工具(其实是有挂)-哔哩哔哩;1、这是跨平台的瓜瓜...
2分钟带你了解!欢乐卡五星辅助... 欢乐卡五星辅助工具是一款专注玩家量身打造的游戏记牌类型软件,在欢乐卡五星辅助工具这款游戏中我们可以记...
实测分享"奇迹陕西游... 实测分享"奇迹陕西游戏辅助器"开挂(透视)辅助下载(一直是有挂)-哔哩哔哩;奇迹陕西游戏辅助器是一项...