Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Выбор фигуры по тексту из выпадающего списка
 
Огромное спасибо и благодарность за помощь модератору Юрий М и пользователю Sanja

Код VBA: #10 22 Ноя 2016 22:50:01 работает и является решением на поставленный вопрос: "Выбор фигуры по тексту из выпадающего списка"

Код был переделан под необходимые нужды:
Код
Sub Plan()
Dim sNumber As String, Shp As Shape
Dim sxema As String
sxema = Cells(22, 13)
        For Each Shp In ActiveSheet.Shapes
            If Shp.name Like "*Plan*" Then Shp.Visible = msoFalse
        Next      
sNumber = Split(sxema)(0)        
            Select Case sNumber
                Case "1": ActiveSheet.Shapes.Range(Array("Plan1")).Visible = msoTrue
                Case "2": ActiveSheet.Shapes.Range(Array("Plan2")).Visible = msoTrue
            End Select
End Sub
Выбор фигуры по тексту из выпадающего списка
 
Цитата
#6 22 Ноя 2016 20:26:23
Все классно код работает, но некорректно
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Dim sNumber As String, Shp As Shape
    If Not Intersect(Target, Range("A3")) Is Nothing Then
        For Each Shp In ActiveSheet.Shapes
            Shp.Visible = msoFalse
        Next
        sNumber = Split(Target)(1)
        Select Case sNumber
            Case "№1": ActiveSheet.Shapes.Range(Array("Рисунок 2")).Visible = msoTrue
            Case "№2": ActiveSheet.Shapes.Range(Array("Group 3")).Visible = msoTrue
            'Дальше по аналогии
        End Select
    End If
End Sub  

Ну есть проблема код закрывает все фигуру на листе даже которые не относятся к выпадающему списку.
Как можно слетать так, чтобы скрытыми были фигуры из списка. (нужен только пример)
Выбор фигуры по тексту из выпадающего списка
 
К сожалению не получается сделать так. (это не рисунок)
Уже пытался сделать по теме: "Выбор фото из выпадающего списка". Выдает ошибку: "неверная ссылка"  
Изменено: ediczr - 22.11.2016 18:12:54
Выбор фигуры по тексту из выпадающего списка
 
Доброго времени суток.

Задача в следующем: "Необходимо выбрать фигуру из выпадающего списка или на крайний случай по условия".
Прошу Вас помочь или подсказать возможные решение задачи, возникшие при работе с фигурами в «excel».  

Задача прикреплена в файле. (на листе 1 «выпадающий список», на листе 2 «данные по фигурам».)
Запуск автокада через ексель, возникает ошибка в скрипте VBA
 
Все классно, скрипт работает.

P.S.
От себя лично, выражаю большую благодарность Vladimir Zakharov за профессионализм.
Спасибо за помощь решении проблемы.
Запуск автокада через ексель, возникает ошибка в скрипте VBA
 
#18 (17 Окт 2016 14:26:48)

1. Отключил все библиотеки VBA принадлежащие "AutoCAD"



2. Запустил скрип #18 (17 Окт 2016 14:26:48) F8 (проверка)

- На этапе скрипта:
Код
Set AcadDoc = GetObject(FileDwg)  
AcadDoc.Application.Visible = True

Файл "AutoCAD" c чертеж (*.dwg) открыт

- На этапе:
Код
Set AcadDoc = Nothing

Остается только "морда" AutoCAD.
Изменено: ediczr - 17.10.2016 14:52:43
Запуск автокада через ексель, возникает ошибка в скрипте VBA
 
Так по этапам:

#13
Цитата
Так, уже теплее. Теперь откройте Автокад вручную и не загружайте файл. И снова пошагово по F8 пройдитесь по коду. Добавьте только в код строку из сообщения #8
1. Открыл только "морду" AutoCAD.
2.  Добавил строчку (смотреть ниже) в скрипт #4 (17 Окт 2016 00:55:32)
 
Код
If Err Then MsgBox "Ошибка регистрации AutoCAD", vbCritical, "Сбой!": Exit Sub   
Добавил ниже строки
Код
Set Acad = CreateObject("AutoCAD.Application") 

3. При открытой "морде"  AutoCAD файл запускается и работает.


4. Если "AutoCAD" не запущен, то происходит остановка выполнения скрипта и выводит ошибку.

Остановка выполнения скрипта:
 
Код
If Err Then    IsNew = True
Err.Clear      
Set Acad = CreateObject("AutoCAD.Application")


#15
Цитата
Вижу из сообщения #11 что в VBE-References установлена ссылка на AutoCAD 2012 Type Library, поэтому попробуйте еще такую версию кода:

1. Открыл только "морду" AutoCAD.
2. Запустил скрипт #16 (17 Окт 2016 11:32:31)
3. При открытой "морде"  AutoCAD файл запускается и работает.
4. Если "AutoCAD" не запущен, то происходит остановка выполнения скрипта и выводит ошибку.

Запуск автокада через ексель, возникает ошибка в скрипте VBA
 
Цитата
И еще на всякий случай добавьте ниже строки  
Set Acad = CreateObject("AutoCAD.Application")
такую вот строчку кода
If Err Then MsgBox "Ошибка регистрации AutoCAD", vbCritical, "Сбой!": Exit Sub

? Добавить после:
Код
Set Acad = GetObject(, "AutoCAD.Application")
или
Код
Set Acad = CreateObject("AutoCAD.Application")
Запуск автокада через ексель, возникает ошибка в скрипте VBA
 
Библиотеки подключенные в Excel VBA:

При отладки кода F8 тоже самое.
Запуск автокада через ексель, возникает ошибка в скрипте VBA
 
Цитата
Закройте все окна Autocad и в пошаговом режиме отладки кода по нажатию F8 определите, на какой строчке кода возникает проблема.
Программа AutoCAD закрыта .
При проверки кода с пошаговым выполнением скрипта:
Ошибка: "Microsoft Excel ожидает, пока другое приложение завершит действие OLE."
Код
Set Acad = CreateObject("AutoCAD.Application")
Дальше выполняет следующие строки скрипта:
Код
End If
cad.Visible = True
On Error GoTo exit_

При выполнении скрипта:
Код
With Acad.Documents

Завершает скрипт и переход на:
Код
 If Err Then MsgBox Err.Description, vbCritical, "Error"

Попробовал поменять имя файла autoCAD на имя которого нет, для выполнения функции если нет то создать новый файл autoCAD.
Происходит тоже самое, что и выше переход:
Код
If Err Then MsgBox Err.Description, vbCritical, "Error" 
Запуск автокада через ексель, возникает ошибка в скрипте VBA
 
Уточнение:
Цитата
Если по каким-то причинам Вам нужно, чтобы VBA-код в Excel при этом дожидался открытия dwg, то уточните это
В общих чертах хотелось чтобы скрипт VBA Excel проверил запустился или нет файл AutoCAD .

Возможно сделать так, чтобы при загрузки файла AutoCAD был виден процесс загрузки. (через терминал  MsgBox)

А то при запуске скрипта видно только, что система "выполнят действие" а что происходит.
Запуск автокада через ексель, возникает ошибка в скрипте VBA
 
Добрый день.

Скрипт VBA (попробовал):
Код
Sub OpenDwg()
Const FileDwg = "I:\document\drawings.dwg"
Dim Acad As Object
On Error Resume Next
Set Acad = CreateObject("AutoCAD.Application")
With Acad.Documents
    .Open FileDwg
End With
If Err Then MsgBox Err.Description, vbCritical, "Error"
End 

Ошибка осталась.
Долго загружает AutoCAD и выводит ошибку с "Microsoft Excel ожидает, пока другое приложение завершит действие OLE."

Скрипт VBA:
Код
Sub CreateDwg()
 
  Const FileDwg = "I:\document\drawings.dwg"  '<-- менять здесь
 
  Dim Acad As Object, IsNew As Boolean
 
  On Error Resume Next
  Set Acad = GetObject(, "AutoCAD.Application")
 
  If Err Then
    IsNew = True
    Err.Clear
    Set Acad = CreateObject("AutoCAD.Application")
  End If
  Acad.Visible = True
  On Error GoTo exit_
 
  With Acad.Documents
 
    If Dir(FileDwg) = "" Then
      ' Если файла FileDwg на месте нет, то создать новый
      .Add
      .SaveAs FileDwg
    Else
      ' Файл FileDwg уже есть - открыть его
      '.Open FileDwg
      Shell """" & Acad.Path & "\acad.exe"" " & """" & FileDwg & """"
    End If
 
  End With
 
exit_:
  If Err Then MsgBox Err.Description, vbCritical, "Error"
 
End 

Ошибка "Microsoft Excel ожидает, пока другое приложение завершит действие OLE."


Самое интересное в том, что если сделать:

1. Запустить файл "AutoCAD" и оставить его открытым.
2. Запустить "второй" скрипт VBA то файл "AutoCAD" запускается и выводит: открыть файл только для чтения ? Нажимаем ОК и файл загружается.





Проблема в процессе загрузки файла autoCAD через скрипт VBA
Запуск автокада через ексель, возникает ошибка в скрипте VBA
 
Доброго времени суток.

Создаю новую тему, так как старая тема: "Запуск AutoCAD через Excel" закрыта и отправлено в архив.
Вопрос в ошибке проявляющая при выполнении скрипта VBA "Microsoft Excel ожидает, пока другое приложение завершит действие OLE."


Скрипт VBA:
 
Код
Sub CreateDwg()
 
 Const FileDwg = "I:\document\drawings.dwg" '<-- менять здесь
 
 Dim Acad As Object, IsNew As Boolean
 
 On Error Resume Next
 Set Acad = GetObject(, "AutoCAD.Application")
 
    If Err Then
    IsNew = True
    Err.Clear
    Set Acad = CreateObject("AutoCAD.Application")
    End If
 
 On Error GoTo exit_
 
 With Acad.Documents
 
    If Dir(FileDwg) = "" Then
    ' Если файла FileDwg на месте нет, то создать новый
    .Add
    .SaveAs FileDwg
    Else
    ' Файл FileDwg уже есть - открыть его
    .Open FileDwg
    End If
 
 End With
 
exit_:
 If Err Then MsgBox Err.Description, vbCritical, "Error"
 
End Sub  
Скрипт работал пока файл AutoCAD весил не много, сейчас файл весит 29 Мбайт.  
Прошу помочь в решении данной проблемы (я понимаю, что файл долго загружается и происходит завершение процесса)  
? Возможно решения вопроса: Ждать до конца выполнения exe, открываемого из excel

Заранее благодарю за помощь.  
Страницы: 1
Наверх