|
|
|
Запуск VBscript в Excel (через Oleobject)
|
|||
|---|---|---|---|
|
#18+
Запуск VBscript в Excel (через Oleobject) Возможно ли это? По ходу хочу для каждого типа excel - файла выполнять свои действия Сначала пихать в файл скрипт Потом запускать на выполнение ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2008, 17:22 |
|
||
|
Запуск VBscript в Excel (через Oleobject)
|
|||
|---|---|---|---|
|
#18+
Воспользуйтесь поиском... ------------ С уважением, IKAR IkarHomeCenter ........ Детский Дворик ........ ГавГав.Инфо Портал русскоязычной группы пользователей Sybase ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2008, 17:27 |
|
||
|
Запуск VBscript в Excel (через Oleobject)
|
|||
|---|---|---|---|
|
#18+
Как вариант предлагаю создать книгу с нужными скриптами оформленными в виде функций (или записать их общую книгу макросов, смотря какая у Вас ситуация) и потом открывать эту книгу и нужный файл и запускать нужную функцию. Насколько я помню так можно делать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2008, 17:51 |
|
||
|
Запуск VBscript в Excel (через Oleobject)
|
|||
|---|---|---|---|
|
#18+
На входе большой поток разных типов Excel - файлов (типы допустим понимаю из названия файлов) Дальше эти файлы разбираются и данные пишутся в базу Проблема в том, что бывают колонки поменяют или страницы или еще какую-нибудь мелочь И файл уже не распознается - надо переписывать код Хотелось бы иметь возможность, чтобы пользователь мог подправить к нужному формату файл внешним скриптом Поток большой и править в ручную нереально - никто не будет Предложенный вариант кажется сложноватым - была надежда на более простое решение Пихнуть в ячейку А1 скрипт и сказать Run ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2008, 10:42 |
|
||
|
Запуск VBscript в Excel (через Oleobject)
|
|||
|---|---|---|---|
|
#18+
Вот так подойдет http://support.microsoft.com/kb/219905/ru ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2008, 11:49 |
|
||
|
Запуск VBscript в Excel (через Oleobject)
|
|||
|---|---|---|---|
|
#18+
наткнулся на подобное решение http://www.script-coding.info/MSOffice.html раздел Динамическое создание и запуск процедур и функций VBA Проблема, что надо работать уже с подготовленным фалом (где нужные опции включены) Да и не пашет что-то - рубится на Run ioo_excel.Application.Workbooks.Open('c:\temp\1.xls') i = ioo_excel.VBE.ActiveVBProject.VBComponents.Count ioo_excel.VBE.ActiveVBProject.VBComponents.Add(1) ioo_excel.VBE.ActiveVBProject.VBComponents.Item(i + 1).CodeModule.InsertLines( 1, "Public Declare Function Beep Lib 'kernel32' _") ioo_excel.VBE.ActiveVBProject.VBComponents.Item(i + 1).CodeModule.InsertLines( 2, "(ByVal dwFreq As Long, ByVal dwDuration As Long) As Long") ioo_excel.VBE.ActiveVBProject.VBComponents.Item(i + 1).CodeModule.InsertLines( 3, "Sub TestSub(Caption as String, Text as String)") ioo_excel.VBE.ActiveVBProject.VBComponents.Item(i + 1).CodeModule.InsertLines( 4, " MsgBox Text, vbOkOnly + vbInformation, Caption") ioo_excel.VBE.ActiveVBProject.VBComponents.Item(i + 1).CodeModule.InsertLines( 5, "End Sub") ioo_excel.VBE.ActiveVBProject.VBComponents.Item(i + 1).CodeModule.InsertLines( 6, "Sub TestBeep()") ioo_excel.VBE.ActiveVBProject.VBComponents.Item(i + 1).CodeModule.InsertLines( 7, " res = Beep(500, 100)") ioo_excel.VBE.ActiveVBProject.VBComponents.Item(i + 1).CodeModule.InsertLines( 8, " res = Beep(550, 100)") ioo_excel.VBE.ActiveVBProject.VBComponents.Item(i + 1).CodeModule.InsertLines( 9, " res = Beep(600, 100)") ioo_excel.VBE.ActiveVBProject.VBComponents.Item(i + 1).CodeModule.InsertLines( 10, " res = Beep(650, 100)") ioo_excel.VBE.ActiveVBProject.VBComponents.Item(i + 1).CodeModule.InsertLines( 11, " res = Beep(700, 100)") ioo_excel.VBE.ActiveVBProject.VBComponents.Item(i + 1).CodeModule.InsertLines( 12, " res = Beep(650, 100)") ioo_excel.VBE.ActiveVBProject.VBComponents.Item(i + 1).CodeModule.InsertLines( 13, " res = Beep(600, 100)") ioo_excel.VBE.ActiveVBProject.VBComponents.Item(i + 1).CodeModule.InsertLines( 14, " res = Beep(550, 100)") ioo_excel.VBE.ActiveVBProject.VBComponents.Item(i + 1).CodeModule.InsertLines( 15, " res = Beep(500, 700)") ioo_excel.VBE.ActiveVBProject.VBComponents.Item(i + 1).CodeModule.InsertLines( 16, "End Sub") ioo_excel.Application.Run ("TestSub", "Test VBA", "Сейчаc будет произведён вызов Win32 API функции Beep()...") ioo_excel.Application.Run ("TestBeep") ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2008, 12:06 |
|
||
|
Запуск VBscript в Excel (через Oleobject)
|
|||
|---|---|---|---|
|
#18+
shurakm1 ioo_excel.VBE.ActiveVBProject.VBComponents.Item(i + 1).CodeModule.InsertLines( 1, "Public Declare Function Beep Lib ' kernel32 ' _") ИМХО, ошибка здесь. В VBA одинарная кавычка - это начало комментария ------------ С уважением, IKAR IkarHomeCenter ........ Детский Дворик ........ ГавГав.Инфо Портал русскоязычной группы пользователей Sybase ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2008, 12:48 |
|
||
|
Запуск VBscript в Excel (через Oleobject)
|
|||
|---|---|---|---|
|
#18+
shurakm1ioo_excel.Application.Run ("TestSub", "Test VBA", "Сейчаc будет произведён вызов Win32 API функции Beep()...") а макрос TestSub у Вас есть в активной книге? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2008, 12:57 |
|
||
|
Запуск VBscript в Excel (через Oleobject)
|
|||
|---|---|---|---|
|
#18+
+/-... а макрос TestSub у Вас есть в активной книге?Так он же его динамически и создает: shurakm1ioo_excel.VBE.ActiveVBProject.VBComponents.Item(i + 1).CodeModule.InsertLines( 3, "Sub TestSub(Caption as String, Text as String)") Кстати, shurakm1 , не увидел в Вашем примере строки: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2008, 13:12 |
|
||
|
Запуск VBscript в Excel (через Oleobject)
|
|||
|---|---|---|---|
|
#18+
Спасибо поправил i = ioo_excel.VBE.ActiveVBProject.VBComponents.Count ioo_excel.VBE.ActiveVBProject.VBComponents.Add(1) ioo_excel.VBE.ActiveVBProject.VBComponents.Item(i + 1).CodeModule.InsertLines( 1, 'Public Declare Function Beep Lib "kernel32" _') ioo_excel.VBE.ActiveVBProject.VBComponents.Item(i + 1).CodeModule.InsertLines( 2, "(ByVal dwFreq As Long, ByVal dwDuration As Long) As Long") ioo_excel.VBE.ActiveVBProject.VBComponents.Item(i + 1).CodeModule.InsertLines( 3, "Sub TestSub(Caption as String, Text as String)") ioo_excel.VBE.ActiveVBProject.VBComponents.Item(i + 1).CodeModule.InsertLines( 4, " MsgBox Text, vbOkOnly + vbInformation, Caption") ioo_excel.VBE.ActiveVBProject.VBComponents.Item(i + 1).CodeModule.InsertLines( 5, "End Sub") ioo_excel.VBE.ActiveVBProject.VBComponents.Item(i + 1).CodeModule.InsertLines( 6, "Sub TestBeep()") ioo_excel.VBE.ActiveVBProject.VBComponents.Item(i + 1).CodeModule.InsertLines( 7, " Sheets(2).Activate") ioo_excel.VBE.ActiveVBProject.VBComponents.Item(i + 1).CodeModule.InsertLines( 8, "End Sub") ioo_excel.Application.Run ("TestBeep") работает, но ... 'Для возможности работы скрипта необходимо установить флажок "Доверять доступ к Visual Basic Project" на вкладке "Надежные издатели" диалога "Безопасность" в соответствующем приложении (Word или Excel) через меню "Сервис" - "Макрос" - "Безопасность...".' ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2008, 13:12 |
|
||
|
Запуск VBscript в Excel (через Oleobject)
|
|||
|---|---|---|---|
|
#18+
Да и разумеется перед этим ll_ole_result = ioo_excel.ConnectToNewObject("excel.application") IF ll_ole_result <> 0 THEN fn_err_mess("Ошибка", "Невозможно подключиться к Excel-ю. Возможно он не установлен.") END IF ioo_excel.Application.Workbooks.Open('c:\temp\1.xls') ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2008, 13:14 |
|
||
|
Запуск VBscript в Excel (через Oleobject)
|
|||
|---|---|---|---|
|
#18+
Эээ.. Вообщем какой-то корявый скрипт Просто дело не в нем, а в самой возможности ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2008, 13:22 |
|
||
|
Запуск VBscript в Excel (через Oleobject)
|
|||
|---|---|---|---|
|
#18+
Товарищ автор. Вы меня извините.Ничего нового не скажу.Всё это излагал в своих ранних работах,но проблемма знакомая,поэтому позволю себе... Во-первых,организация.Хошь ложить инфу на диск-ложи(мой знакомый technical writer сказал,что такое это слово в русите есть,но оно нецензурное)в текст формате,tab delimited.А-а!,Ты его хочешь читать екселем,так его,именно его,ексель классно поднимает,правый клик->open with->excel,а если,ещё,три весёлые буквы txt поменять на xls,то и double click откроет. А теперь так Код: plaintext 1. единственно что,последнея строка,у всех,должна начинаться и закачиваться <return>,чтобы структура от слияния не поплыла. А дальше,bcp в базу,знаете,как туда таб поделённые файла взлетают?На раз.И причём тут,смена структуры?Вот вам и внешний инструмент на случай перемены столбцов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2008, 20:02 |
|
||
|
|

start [/forum/topic.php?fid=15&msg=35144185&tid=1336787]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
33ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 13ms |
| total: | 139ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...