用VBA编程比用AutoLISP编程要困难得多,但这次我很幸运,我将以这种方式向Sitphin Joe的家人致以成千上万的感谢和良好的健康,他们为我们提供了他的工作。
解决第一个问题:它不是最好的,但它有效。
Private Declare Function [color=red]GetOpenFileName [/color]Lib "comdlg32.dll" Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long ' V : 23.01.2014 .Private Type [color=red]OPENFILENAME [/color]' V : 23.01.2014 .lStructSize As LonghwndOwner As LonghInstance As LonglpstrFilter As StringlpstrCustomFilter As StringnMaxCustFilter As LongnFilterIndex As LonglpstrFile As StringnMaxFile As LonglpstrFileTitle As StringnMaxFileTitle As LonglpstrInitialDir As StringlpstrTitle As Stringflags As LongnFileOffset As IntegernFileExtension As IntegerlpstrDefExt As StringlCustData As LonglpfnHook As LonglpTemplateName As StringEnd Type ' OPENFILENAME'' ---------------------------------------------------------------------------Public Function [color=red]FGetFiled[/color](DialogTitle As String, InitialDir As String, Extensie As String) As String ' V : 23.01.2014 .' Functie Preluare Cale Fisier !ThisDrawing.Utility.Prompt (vbNewLine + " FGetFiled : V : 23.01.2014 ; START !")Dim tipF As StringDim OFName As OPENFILENAMEDim Filter As StringSelect Case Extensie Case "txt", "coo", "rad": tipF = "TEXT" Case "csv": tipF = "CSV" Case Else: tipF = "UNKNOWN"End Select' Filter = "Drawing Files (*.dwg)" + Chr$(0) + "*.dwg" + Chr$(0) + "All Files (*.*)" + Chr$(0) + "*.*" + Chr$(0)Filter = tipF + " Files (*." + Extensie + ")" + Chr$(0) + "*." + Extensie + Chr$(0) + "All Files (*.*)" + Chr$(0) + "*.*" + Chr$(0)' InitialDir = "C:\Program Files\AutoCAD 2006\Sample"' DialogTitle = "Open a FILE !"OFName.lStructSize = Len(OFName) 'Set the Structure sizeOFName.hwndOwner = 0 'Set the Owner windowOFName.lpstrFilter = Filter 'Set the FilterOFName.nMaxFile = 255 'Set the Maximum number of CharsOFName.lpstrFile = Space(254) 'Create a BufferOFName.lpstrFileTitle = Space$(254) 'Create a BufferOFName.nMaxFileTitle = 255 'Set the Maximum number of CharsOFName.lpstrInitialDir = InitialDir 'Set the initial DirectoryOFName.lpstrTitle = DialogTitle 'Set the dialog TitleOFName.flags = 0 'No extra FlagsIf GetOpenFileName(OFName) Then 'Show the 'Open File' dialog FGetFiled = Trim(OFName.lpstrFile) Else FGetFiled = "?"End If'MsgBox OutputStrThisDrawing.Utility.Prompt (vbNewLine + " FGetFiled : END !")End Function ' FGetFiled
解决第二个问题: