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
Запуск CommandButton в Excel через приложение VB6
Сутуация следующая:
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
Просто задаю выполнение "кнопкой-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" ))
В Вашем случае можно обойтись без использования свойства Parent, ибо iXLApp.Run Macro:="MyMacros4" 'iXLApp.Run "MyMacros4", но можно и "имитировать" нажатие нужной кнопки (ведь почти всегда существует вероятность, что кнопка не будет использоваться для вызова ещё одного макроса)
Есть макрос:
Application.Run "ATPVBAEN.XLA!Regress", ActiveSheet.Range("$D$2:$D$7"), _
ActiveSheet.Range("$C$2:$C$7"), False, True, , Sheets("Ëèñò4").Range( _
"$A$1:$K$32"), False, False, True, False, , False
В Excel -замечательно работает... а вот если запускать через приложение VB6 - ругается, мол: 1004 "неудалось найти 'ATPVBAEN.XLA'....
P.S. "ATPVBAEN.XLA!Regress" - это в Excel: Сервис->Анализ данных->Регресия
Попробуйте указать полный путь, к примеру "C:\Program Files\Microsoft Office\Office\Library\Analysis\ATPVBAEN.XLA!Regress"
Поясню предыдущий вопрос.... пытаюсь запустить макрос через 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("Ëèñò4").Range( _
"$A$1:$K$32"), False, False, True, False, , False
Как выполнить вызов функции 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
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