У меня есть файл excel с номерами деталей, указанными в столбце. При запуске код разбивает первый введенный номер детали. В первой половине код находит подпапку, содержащую номера деталей этой категории, а во второй половине — фактическое имя файла. Пример 01T-1001-01
. 01T — это имя подпапки, а 1001-01
— имя файла, оно разбивается на -
. Однако иногда описания детали добавляются в скобках, например 1001-01 (Chuck)
. Вот для чего нужна дикая карта.
Предполагается, что код сначала проверяет, открыт ли AutoCAD, если да, то откройте dwg в открытом приложении AutoCAD, если нет, то откройте новое приложение.
Проблема в том, что он откроет один чертеж (первый в списке), но выдаст ошибку «Ошибка времени выполнения« 438 »: объект не поддерживает это свойство или метод». список
ОБНОВЛЕННЫЙ код ниже:
Dim ACADApp As AcadApplication
Dim ACADPath As String
Dim ACAD As Object
Dim NFile As Object
Sub Open_Dwg()
Dim Wildcard As String
Dim path As String
Dim target As String
Dim SplitString() As String
Dim i As Integer
Dim a As Integer
i = 1
If ACAD Is Nothing Then
Set ACAD = CreateObject("AutoCad.Application")
If ACAD Is Nothing Then
MsgBox "Could not start AutoCAD.", vbCritical
Exit Sub
End If
Else
Set ACAD = GetObject(, "AutoCAD.Application")
End If
Set ACADApp = ACAD
ACADApp.Visible = True
Do Until Cells(i, 1).Value = ""
ACADPath = ""
Wildcard = ""
OpenString = ""
path = "C:\Users\aholiday\Desktop\DEMO" 'Root Folder
target = Cells(i, 1).Value 'Get Targeted Cell Value
target = UCase(target) 'All Letters to Upper Case
SplitString() = Split(target, "-", 2) 'Split given name to obtain subfolder and name
path = path & "\" & SplitString(0) & "\" 'Build Complete Path
OpenString = path & SplitString(1) & ".dwg" 'File Path and Name
Wildcard = Dir(path & SplitString(1) & "*.dwg") 'File Path and Wildcard
If Dir(OpenString) <> "" Then
ACADPath = OpenString
OpenFile (ACADPath)
Else
If Wildcard <> "" Then 'If Not Then Use Wildcard
ACADPath = path & Wildcard
OpenFile (ACADPath)
Else
MsgBox ("File " & target & " Not Found")
End If
End If
i = i + 1
Loop
End Sub
Function OpenFile(ByVal ACADPath As String) As String
Set ACADApp.ActiveDocument = ACADApp.Documents.Open(ACADPath)
End Function
Set ACAD = GetObject(, "ACAD.Application")
Я получаю сообщение об ошибке Компонент ActiveX не может создать объект 27.06.2017Set ACAD = GetObject(, "ACAD.Application")
в оператор If послеelse
, я получу неверное имя файла. Я использую путь к файлу плюс имя файла &.dwq вSet ACADApp.ActiveDocument = ACADApp.Documents.Open("<your filename>")
27.06.2017Set ACADApp.Document = ACADApp.Documents.Open(ACADPath)
, и я изменил его наACADApp.Documents.Open ACADPath
. Я не видел, чтобы вы избавились отSet
. Спасибо. 28.06.2017