Страницы: 1
RSS
Параметры командной строки при запуске Excel
 
Файл "Test.xls" открывается из командной строки вводом:  
< Excel.exe /r "C:\Мои документы\Test.xls" >.    
 
При открытии файла запускается макрос, который выводит Msgbox c текстом "Test".  
 
Вопрос следующий. Есть ли способ при открытии файла Test.xls из командной строки с помощью параметра, ключа (или другим способом) передавать в Msgbox значение (целое число, которое каждый раз будет изменяться).    
 
Т.е. допустим при вводе в командную строку:  
< Excel.exe /r "C:\Мои документы\Test.xls" /1515 >  
будет выводиться Msgbox "1515".
 
Цитата: ( http://programmersforum.ru/showthread.php?t=166456 )  
 
"Благодарю Hugo121. Буду разбираться."  
 
Не разобрались? Зачем этот кросспостинг? На всех форумах по Excel отвечают в основном одни и те же специалисты.
 
В точку, Леш.
Я сам - дурнее всякого примера! ...
 
А вот если надо так - скриптом открыть файл, и чтобы сработал его макрос автозапуска, и вывел число, переданное по параметру - вот именно так вероятно не получится.  
Можно отключить Экселю события, открыть файл, прописать куда нужно что нужно, потом принудительно запустить макрос из файла (или сохранить/закрыть файл, включить события, снова открыть файл.)  
Но макрос при запуске должен быть не    
  MsgBox "Test", а хотя бы    MsgBox [A1] - а в A1 можно скриптом поместить параметр.
Вы луше объясните, что именно хотите достичь - может быть найдётся другое решение.
 
Кросспостинг - вещь нехорошая. Да только с миру по нитке ...  
Признаю - не разобрался. Материал мне дали, да только язык материала английский, а с этим у меня беда. Буду благодарен за практические идеи.
 
Практически например вот: я Эксель с новой книгой открываю из Тотала таким vbs скриптом:  
 
 
 
Dim objExcel  
 
ActivateExcel  
 
objExcel.Workbooks.Add  
 
Private Function ActivateExcel()  
On Error resume next    
Set objExcel = GetObject(, "Excel.Application")  
If objExcel Is Nothing Then  
Set objExcel = CreateObject("Excel.Application")  
objExcel.Workbooks.Open ("c:\Documents and Settings\Игорь\Application Data\Microsoft\Excel\XLSTART\MyFunc.xls")  
objExcel.Workbooks.Open ("c:\Documents and Settings\Игорь\Application Data\Microsoft\Excel\XLSTART\NUMBERLAT.XLS")  
objExcel.Workbooks.Open ("c:\Documents and Settings\Игорь\Application Data\Microsoft\Excel\XLSTART\PERSONAL.XLS")  
objExcel.Visible = True  
End If  
End Function  
 
 
 
Если Эксель уже открыт - то просто создаётся новая книга.  
Если закрыт - после открытия Экселя ещё открываются книги из папки автозапуска.  
Сюда вполне можно добавить занесение WScript.Arguments.Item(0) в любое место открываемого документа.  
А нужную книгу открывать вместо  
objExcel.Workbooks.Add  
 
Так расскажите, что именно нужно получить в итоге?
 
Имеется файл. При его открытии запускается форма UserForm1. После ввода в форму табельного номера работника - открывается UserForm2, содержащая все персональные данные работника. Данные вытягиваются макросом "Test" из 4 файлов ".xls".  
 
Хотелось шаг с UserForm1 пропустить и передавать табельный номер сразу в макрос "Test".
 
Допустим значение "1515" нужно прописать в ячейку А1.  
Как изменить строку WScript.Arguments.Item(0)?  
 
Будет ли макрос "Test" запускаться простым Call Test в скрипте?
 
Уточню. Файл запускается именно из Тотала.  
Hugo, заранее благодарю.
 
Например так:  
 
Dim objExcel, wb  
 
ActivateExcel  
 
set wb=objExcel.Workbooks.Open ("c:\Temp\4Brod9ga\testfile.xls")  
wb.sheets(1).Range("a1").value =  WScript.Arguments.Item(0)  
 
objExcel.Application.OnTime Now, "Кнопка1_Щелчок"  
 
Private Function ActivateExcel()  
On Error resume next    
Set objExcel = GetObject(, "Excel.Application")  
If objExcel Is Nothing Then  
Set objExcel = CreateObject("Excel.Application")  
objExcel.Workbooks.Open ("c:\Documents and Settings\Игорь\Application Data\Microsoft\Excel\XLSTART\MyFunc.xls")  
objExcel.Workbooks.Open ("c:\Documents and Settings\Игорь\Application Data\Microsoft\Excel\XLSTART\NUMBERLAT.XLS")  
objExcel.Workbooks.Open ("c:\Documents and Settings\Игорь\Application Data\Microsoft\Excel\XLSTART\PERSONAL.XLS")  
objExcel.Visible = True  
End If  
End Function  
 
 
 
Кнопка1_Щелчок - это    
 
Sub Кнопка1_Щелчок()  
UserForm1.Show  
End Sub  
 
Т.е. если эта форма при запуске будет брать значение из ячейки (например, если переменная не задана первой формой, то берём с листа), то должно сработать.  
Только потом форма должна сразу это значение на листе затереть, ну или это должна сделать первая форма.  
 
Но вот как задать скриптом значение переменной в макросе файла - пока не нашёл.
 
Hugo, ОГРОМНОЕ СПАСИБО.  
Все работает.
Страницы: 1
Наверх