| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Vba autocad excel запускается лишь на миг

Vba autocad excel запускается лишь на миг

Ответ
Поиск в этой теме
Непрочитано 09.10.2016, 15:54 #1
Vba autocad excel запускается лишь на миг
Alfa_Mike
 
Регистрация: 04.10.2016
Сообщений: 21

Привет. Опрубую вот такой вот код для запуска excel из под autocad vba. Только проблема в том, что он(приложение excel) сразу же исчезает, хотя Visible = True
Почему так происходит?
Код:
[Выделить все]
 
Private Sub CommandButton2_Click()
Dim excelApp As Excel.Application
Dim wkbObj As Workbook
Dim shtObj As Worksheet
On Error Resume Next
UserForm3.Hide
Err.Clear
Set excelApp = GetObject(, "Excel.Application")

If Err <> 0 Then
Err.Clear
Set excelApp = CreateObject("Excel.Application")
If Err <> 0 Then
MsgBox ("Could not start Ms Excel")
End
End If
End If
excelApp.Visible = True
Set wkbObj = execelApp.workbooks.Add
Set sht = excelApp.Worksheet(1)
UserForm3.show

End Sub
----- добавлено через ~7 ч. -----
Или может так и должно быть? Япросто это первый раз делаюи не знаю как выглядит запуск экселя из под vba. Должно или нет появляться обычное окно экселя?
Просмотров: 3793
 
Непрочитано 10.10.2016, 00:53
#2
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,004


должно)
1. Что за End без классификатора типа блока кода в 15 строке?
2. Не получилось подключиться к экселю - ну и фиг с ним?) Пытаемся сделать его видимым, создать в нем документ..
3. Следите за переменными - объявляете одни, в коде потом пишете другие.
Сергей812 вне форума  
 
Автор темы   Непрочитано 10.10.2016, 01:52
#3
Alfa_Mike


 
Регистрация: 04.10.2016
Сообщений: 21


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
должно)
1. Что за End без классификатора типа блока кода в 15 строке?
2. Не получилось подключиться к экселю - ну и фиг с ним?) Пытаемся сделать его видимым, создать в нем документ..
3. Следите за переменными - объявляете одни, в коде потом пишете другие.
Сергей, я брал этот пример с одного сайта, меня тоже насторожил этот END, который ни к чему ни привязан вроде.
1. Убрал его
2. чуть поменял логику, чтобы выводилось сообщение и закоментил ошибку. Теперь при запуске выдается мое сообщение "Запустить не сработало" и еще следующая ошибка "Could not start ms exel"
Т.е. не срабатывает ни
Set excelApp = GetObject(, "Excel.Application"
ни
Set excelApp = CreateObject("Excel.Application")
Почему так?(
3. Нашел несоответствие с shtObj, спасибо. Правда до него даже не дошло.
Вот поправленный код

Код:
[Выделить все]
 
Private Sub CommandButton2_Click()
Dim excelApp As Excel.Application
Dim wkbObj As Workbook
Dim shtObj As Worksheet
On Error Resume Next
UserForm3.Hide
Err.Clear
Set excelApp = GetObject(, "Excel.Application")

If Err <> 0 Then
'Err.Clear
MsgBox ("Çàïóñòèòü íå ñðàáîòàëî")
Set excelApp = CreateObject("Excel.Application")
If Err <> 0 Then
MsgBox ("Could not start Ms Excel")
End If
End If
'excelApp.Visible = True
Set wkbObj = execelApp.workbooks.Add
Set shtObj = excelApp.Worksheet(1)
UserForm3.show

End Sub
Alfa_Mike вне форума  
 
Непрочитано 10.10.2016, 09:27
#4
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,004


Читайте документацию, а не подбирайте код - сработает или не сработает) Пройдитесь пошагово отладчиком, смотря на то - что появляется в переменных в окне просмотра выражений. Вот зачем в 7 строчке очистка ошибки? В 5 строчке взвели обработчик ошибок, в 8-ой может быть первая ошибка. Зато в 11-й строке очистку ошибок закомментировали - хотя там как раз выполняется код по факту ошибки в строке 8. Не удалось подключиться к экселю - вывели сообщение, а кто выходить из процедуры будет? Вместо этого пошли дальше что-то делать с переменными, которые могут быть даже не инициализированы.
Сергей812 вне форума  
 
Автор темы   Непрочитано 10.10.2016, 15:33
#5
Alfa_Mike


 
Регистрация: 04.10.2016
Сообщений: 21


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Читайте документацию, а не подбирайте код - сработает или не сработает) Пройдитесь пошагово отладчиком, смотря на то - что появляется в переменных в окне просмотра выражений. Вот зачем в 7 строчке очистка ошибки? В 5 строчке взвели обработчик ошибок, в 8-ой может быть первая ошибка. Зато в 11-й строке очистку ошибок закомментировали - хотя там как раз выполняется код по факту ошибки в строке 8. Не удалось подключиться к экселю - вывели сообщение, а кто выходить из процедуры будет? Вместо этого пошли дальше что-то делать с переменными, которые могут быть даже не инициализированы.
Ну, есть разные способы познания. Когда мы все родились у нас не было инструкции по миру и действовали методом проб и ошибок. И программная среда, я считаю, это то самое место, где методом проб и ошибок познавать лучше всего ( это не отменяет чтение книг и документации). Потому что риск нулевой. Цена ошибки нулевая.
В поправленном коде, что я выкладывал, убрал visible=true, а зря. После его добавления форма стала доступна.
Спасибо за участие.
Alfa_Mike вне форума  
 
Непрочитано 10.10.2016, 16:12
#6
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,588


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Что за End без классификатора типа блока кода в 15 строке?
А в справку посмотреть?
Цитата:
Terminates execution immediately. Never required by itself but may be placed anywhere in a procedure to end code execution, close files opened with the Open statement and to clear variables.
Другое дело, что там более уместно другое выражение...

Код:
[Выделить все]
Option Explicit

Private Sub CommandButton1_Click()
    Dim excelApp As Excel.Application
    Dim wkbObj As Workbook
    Dim shtObj As Worksheet
    
    UserForm1.Hide
    On Error Resume Next
    Set excelApp = GetObject(, "Excel.Application")
    If Err <> 0 Then
        Err.Clear
        Set excelApp = CreateObject("Excel.Application")
        'Если не удалось создать приложение, то
        If Err <> 0 Then
            MsgBox ("Could not start Ms Excel")
            End 'Просто завершаем работу
        End If
    End If
    excelApp.Visible = True
    Set wkbObj = Workbooks.Add(1)
    Set shtObj = wkbObj.Sheets(1)
    'Т тут дальше какой то Ваш код...
    UserForm1.show
End Sub
Boxa вне форума  
 
Непрочитано 10.10.2016, 16:39
#7
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,004


логичнее и читабельнее вместо end выглядит exit sub)
Сергей812 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Vba autocad excel запускается лишь на миг

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
VBA переходи из AutoCAD в Excel. Не работает AppActivate shprot Программирование 5 04.05.2012 22:24
Autocad запускается всегда как в первый раз. Требует уст. файлы. de_qz AutoCAD 19 10.12.2011 22:14
Перенос данных из Excel в Autocad 2010 Pontelimon AutoCAD 3 19.11.2010 13:36
Autocad Architecture 2011 не воспринимает Excel. Cyprus Вертикальные решения на базе AutoCAD 3 17.05.2010 18:23