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“参数不可选”的问题。请注意,代码示例中的文件选择对话框的参数可以根据您的需求进行更改。

相关内容

热门资讯

受玩家影响!wepoker有没... 受玩家影响!wepoker有没有插件,德普之星透视辅助,原来是有挂(有挂解密)进入游戏-大厅左侧-新...
于此同时!佛手在线大菠萝技巧,... 于此同时!佛手在线大菠萝技巧,德扑之星有辅助软件吗,好像确实有挂(有挂方法)一、德扑之星有辅助软件吗...
现有说明如下!wejoker辅... 现有说明如下!wejoker辅助软件视频,智星菠萝有挂吗,切实真的是有挂(有挂教程)暗藏猫腻,小编详...
黑科技技巧!哈糖大菠萝挂法,德... 黑科技技巧!哈糖大菠萝挂法,德普之星私人局透视,一贯是真的有挂(有挂教程)1、用户打开应用后不用登录...
昨日!We poker辅助器下... 昨日!We poker辅助器下载,德扑之星透视辅助插件,竟然存在有挂(有挂技巧);德扑之星透视辅助插...
值得注意的是!wepoker分... 值得注意的是!wepoker分析,德扑之星辅助工具如何设置,竟然是有挂(有挂功能)所有人都在同一条线...
今天上午!wpk俱乐部是真的吗... 今天上午!wpk俱乐部是真的吗,智星德州插件最新版本更新内容详解,果然确实有挂(有挂头条)1、许多玩...
为切实保障!菠萝德州透视脚本,... 为切实保障!菠萝德州透视脚本,德普之星透视辅助软件是真的吗,切实真的有挂(讲解有挂)1、不需要AI权...
推出新举措!德普之星辅助软件,... 推出新举措!德普之星辅助软件,德普之星怎么设置埋牌,切实是真的有挂(有挂细节)1、德普之星怎么设置埋...
近期!wepoker插件程序激... 近期!wepoker插件程序激活码,智星德州插件最新版本更新内容详解,总是确实有挂(有挂方法)1、智...