ML0940 发表于 2022-7-5 20:39:59

嗨,卡尔
 
不幸的是,我不能给你这个答案,因为我不知道。
我得到了那个代码,但从来没有真正需要使用它;我使用我一直发布的第一个文件,因为我真的一次只需要选择一个文件。
 
试着玩转代码,看看你得到了什么。
 
 
另一种选择是只需在ACAD上进行谷歌搜索并打开文件对话框;我向你保证,你会得到大量点击。
 
如果我有时间的话,也许我可以看看,但之后很可能只需要点击一下。
 
 
嗯,如果你注意到,mutliselect有一个常数集,你只需要知道把它放在哪里。
 
毫升

muck 发表于 2022-7-5 20:42:12

在上一篇文章中,你是如何让上面的代码工作的。
当我将其剪切/粘贴到表单中时,以下几行是红色的。
n\u ALLOWMULTISELECT的公共常量=&H200&
N_EXPLORER的公共常量=&H80000
n\u文件的公共常量mustexist=&H1000&
n_hidereadoly的公共常数=&H4&
n\u路径的公共常量必须存在=&H800&
 
我有什么遗漏吗?
非常感谢。

Lt Dan's l 发表于 2022-7-5 20:47:10

它必须在vba中吗?我为fas编译器做了这样的事情。这是在我想出更好的方法来保护Lisp程序之前。
 
编辑____
我删除了我的fas编译器lisp,所以如果你选择这样做,你可以用它运行
m文件。LSP
程序名称。dcl

rocheey 发表于 2022-7-5 20:49:22

 
哇!我在很多月前发布了这个代码。行返回为红色,因为表单模块中不允许使用“Public CONST”声明。张贴在那里的代码将完全放到它自己的“.BAS”模块中,然后从表单模块调用。
 
您将相关代码放入其自己的模块中,然后将其“拖放”到您的
应用程序,只要您需要该功能。这使得代码模块化。
 
 
下面是该代码的更新版本。它不仅具有“文件打开”对话框功能,还具有“文件保存”和“浏览文件夹”对话框。它还允许您将初始打开文件夹设置为网络驱动器-这是VB本身不允许的。文件打开例程接受一个或多个文件的选择。如果未选择任何文件,则返回一个变量-为空,或者为每个选定文件返回一个完全限定的路径规范数组。
 
此外,这里的第一个子例程“Main”基本上是一个演示子例程,用于展示功能。这是示例代码。试着运行它。您应该能够将该子例程中的代码复制并粘贴到表单代码中,然后它就会运行。
 
一个警告-正常情况下,“打开”,拯救“、等对话框是调用它们的应用程序的模式对话框。它们会弹出,在完成“文件打开”对话框之前,你无法执行任何操作。此代码不会执行此操作-如果你单击另一个窗体,文件打开对话框将绘制在另一个窗口的后面。为了使对话框成为模式对话框,你必须获取调用应用程序的内存地址。我可以在Acad窗口中硬连线,但是这段代码在Excel、VB或SolidWorks中都不起作用。所以我作弊了,取而代之的是Windows桌面的地址——但现在代码应该可以在任何地方使用了。
 
 
CommonDialog。txt文件

tuntnguyen 发表于 2022-7-5 20:56:06

你好
首先,感谢rocheey展示了他的代码。然而,它仍然有一些错误。我已经尝试过修复它,它对我来说非常有效。
这是代码,希望它能帮到你这么多。
 

Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias _
"GetOpenFileNameA" (pOpenFileName As OPENFILENAME) As Long
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_ALLOWMULTISELECT = &H200&
Private Const OFN_EXPLORER = &H80000
Private Const OFN_FILEMUSTEXIST = &H1000&
Private Const OFN_HIDEREADONLY = &H4&
Private Const OFN_PATHMUSTEXIST = &H800&

Sub SelectManyFiles()
Dim FileList As New Collection
Dim I As Long
Dim S As String
ShowFileOpenDialog FileList
With FileList
If .Count > 0 Then
S = "The following files were selected:" + vbCrLf
For I = 1 To .Count
S = S + .Item(I) + vbCrLf
Next
MsgBox S
Else
MsgBox "No files were selected!"
End If
End With
End Sub

Sub ShowFileOpenDialog(ByRef FileList As Collection)
Dim OpenFile As OPENFILENAME
Dim lReturn As Long
Dim FileDir As String
Dim FilePos As Long
Dim PrevFilePos As Long
With OpenFile
.lStructSize = Len(OpenFile)
.hwndOwner = 0
.hInstance = 0
.lpstrFilter = "AutoCad Drawings" + Chr(0) + "*.dwg;*.dxf;" + _
Chr(0) + "All Files (*.*)" + Chr(0) + "*.*" + Chr(0) + Chr(0)
.nFilterIndex = 1
.lpstrFile = String(4096, 0)
.nMaxFile = Len(.lpstrFile) - 1
.lpstrFileTitle = .lpstrFile
.nMaxFileTitle = .nMaxFile
.lpstrInitialDir = "C:\"
.lpstrTitle = "Multi Select Drawings"
.flags = OFN_HIDEREADONLY + _
OFN_PATHMUSTEXIST + _
OFN_FILEMUSTEXIST + _
OFN_ALLOWMULTISELECT + _
OFN_EXPLORER
lReturn = GetOpenFileName(OpenFile)
If lReturn <> 0 Then
FilePos = InStr(1, .lpstrFile, Chr(0))
If Mid(.lpstrFile, FilePos + 1, 1) = Chr(0) Then
FileList.Add .lpstrFile
Else
FileDir = Mid(.lpstrFile, 1, FilePos - 1)
Do While True
PrevFilePos = FilePos
FilePos = InStr(PrevFilePos + 1, .lpstrFile, Chr(0))
If FilePos - PrevFilePos > 1 Then
FileList.Add FileDir + "\" + _
Mid(.lpstrFile, PrevFilePos + 1, _
FilePos - PrevFilePos - 1)
Else
Exit Do
End If
Loop
End If
End If
End With
End Sub

Frans 发表于 2022-7-5 20:58:23

您好,tuntnguyen,
 
我复制了你的代码,效果很好
然而
我需要逐个打开图形(LISP例程将使用acaddoc编辑每个图形)
在哪个变量中可以找到图形,如何相应地打开它们?
 
之前,我使用固定目录放置需要编辑的图形
VBA在变量“Drawing”中创建了该目录中所有图形的列表
下面是我的“开场白”代码:
 
 
Do While Len(Drawing) > 0
          Tekopen = Input_Dir & "\" & Drawing
          AutoCAD.Documents.Open (Tekopen)
          AutoCAD.ActiveDocument.Close
          Drawing = Dir()
Loop
 
 
有人能支持我吗?
 
当做
 
弗兰斯

Frans 发表于 2022-7-5 21:03:36

大家好,
 
有人能帮我解决上述问题吗?
 
谢谢
 
弗兰斯
页: 1 [2]
查看完整版本: 获取多个文件名