Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Запуск CommandButton в Excel через приложение VB6

12K
21 января 2009 года
arseen
23 / / 04.05.2006
ОЧЕНЬ НАДЕЮСЬ НА ВАШУ ПОМОЩЬ, ДРУЗЬЯ =(

Сутуация следующая:
1. На листе Excell есть, кнопка которой задан определенный макрос (назовем ее "кнока-Excell")....
2. На форме приложения VB6 есть аналогичная кнопка (назовем ее "кнопка-VB6")....

!!! ВОПРОС:
как съиницировать нажатие "кноки-Excell" при нажатии в приложении VB6 "кнопка-VB6"
В код попытался добавить "от балды" нечто вроде : "Command1.Click = True" - не пашет... сам знаю что тупо)))


Dim iXLApp As Object, iXLWb As Object
iFullName$ = "C:\SaltAnalyst\1.xls"
Set iXLApp = CreateObject("Excel.Application")
Set iXLWb = iXLApp.Workbooks.Open(FileName:=iFullName$)
iXLWb.Worksheets("Лист1").Command1.Click = True <<<<---- вот она эта ерунда =)

iXLWb.Close saveChanges:=True
iXLApp.Quit
Set iXLWb = Nothing
Set iXLApp = Nothing
12K
21 января 2009 года
arseen
23 / / 04.05.2006
Спасибо, вроде нашел нужное...)))
Просто задаю выполнение "кнопкой-VB6" того же макроса, что и "кнопка-Excel"...

Dim iXLApp As Object, iXLWb As Object
iFullName$ = "C:\SaltAnalyst\1.xls"
Set iXLApp = CreateObject("Excel.Application")
Set iXLWb = iXLApp.Workbooks.Open(FileName:=iFullName$)
iXLWb.Parent.Run "MyMacros4"
iXLWb.Close saveChanges:=True
iXLApp.Quit
Set iXLWb = Nothing
Set iXLApp = Nothing

MyMacros4 -тот самый макрос, выполнение которого иницировалось "кнопкой-Excel" ))
275
21 января 2009 года
pashulka
985 / / 19.09.2004
В Вашем случае можно обойтись без использования свойства Parent, ибо iXLApp.Run Macro:="MyMacros4" 'iXLApp.Run "MyMacros4", но можно и "имитировать" нажатие нужной кнопки (ведь почти всегда существует вероятность, что кнопка не будет использоваться для вызова ещё одного макроса)

Код:
Private Sub Command1_Click()

iFullName$ = "C:\SaltAnalyst\1.xls"

If Dir(iFullName$) <> "" Then
   With CreateObject("Excel.Application")
        With .Workbooks.Open(FileName:=iFullName$)
             .Worksheets("Лист1").CommandButton1.Value = True
             '.Parent.Run Macro:= _
             .Worksheets("Лист1").CodeName & ".CommandButton1_Click"
             .Close saveChanges:=True
        End With
        .Quit
   End With
Else
   Command1.Caption = "Файл не найден"
End If

End Sub
12K
22 января 2009 года
arseen
23 / / 04.05.2006
В продолжение темы:
Есть макрос:

Application.Run "ATPVBAEN.XLA!Regress", ActiveSheet.Range("$D$2:$D$7"), _
ActiveSheet.Range("$C$2:$C$7"), False, True, , Sheets("&#203;&#232;&#241;&#242;4").Range( _
"$A$1:$K$32"), False, False, True, False, , False

В Excel -замечательно работает... а вот если запускать через приложение VB6 - ругается, мол: 1004 "неудалось найти 'ATPVBAEN.XLA'....

P.S. "ATPVBAEN.XLA!Regress" - это в Excel: Сервис->Анализ данных->Регресия
275
22 января 2009 года
pashulka
985 / / 19.09.2004
Попробуйте указать полный путь, к примеру "C:\Program Files\Microsoft Office\Office\Library\Analysis\ATPVBAEN.XLA!Regress"
12K
22 января 2009 года
arseen
23 / / 04.05.2006
К сожелению, не пашет... пишет, что макрос не найден ((((((((((((((

Поясню предыдущий вопрос.... пытаюсь запустить макрос через VB-приложение посредствам команды Run "MyMacros4"... - выдает ошибку 1004....
а вот при запуске в самом Excel через CommandButton - макрос работает ((((((

сам макрос представляет из себя следующее: Application.Run "ATPVBAEN.XLA!Regress", ActiveSheet.Range("$D$2:$D$7"), _
ActiveSheet.Range("$C$2:$C$7"), False, True, , Sheets("&#203;&#232;&#241;&#242;4").Range( _
"$A$1:$K$32"), False, False, True, False, , False
275
24 января 2009 года
pashulka
985 / / 19.09.2004
Arseen, В общем-то пояснения были излишни, ибо было сразу понятно о чём идёт речь, а что касается самой проблемы, то в нижеприведённой статье наличествует решение (если же нет времени/желания/... читать статью, то ещё ниже есть выжимка из первоисточника.

Как выполнить вызов функции Microsoft Excel из Microsoft Access 2000

Код:
Sub MyMacros4()

Workbooks.Open(Application.LibraryPath & _
"\Analysis\Atpvbaen.xla").RunAutoMacros xlAutoOpen

With ThisWorkbook
     Application.Run "Atpvbaen.xla!Regress", _
     .Worksheets("Лист1").Range("D2:D7"), _
     .Worksheets("Лист1").Range("C2:C7"), False, True, , _
     .Worksheets("Лист3").Range("A1:K32"), False, False, True, False, , False
End With

End Sub
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог