powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Запуск VBscript в Excel (через Oleobject)
13 сообщений из 13, страница 1 из 1
Запуск VBscript в Excel (через Oleobject)
    #35142199
shurakm1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Запуск VBscript в Excel (через Oleobject)
Возможно ли это?

По ходу хочу для каждого типа excel - файла выполнять свои действия
Сначала пихать в файл скрипт
Потом запускать на выполнение
...
Рейтинг: 0 / 0
Запуск VBscript в Excel (через Oleobject)
    #35142217
Фотография Ikar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Воспользуйтесь поиском...
------------
С уважением, IKAR

IkarHomeCenter ........ Детский Дворик ........ ГавГав.Инфо
Портал русскоязычной группы пользователей Sybase
...
Рейтинг: 0 / 0
Запуск VBscript в Excel (через Oleobject)
    #35142308
+/-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
+/-
Гость
Как вариант предлагаю создать книгу с нужными скриптами оформленными в виде функций (или записать их общую книгу макросов, смотря какая у Вас ситуация) и потом открывать эту книгу и нужный файл и запускать нужную функцию. Насколько я помню так можно делать.
...
Рейтинг: 0 / 0
Запуск VBscript в Excel (через Oleobject)
    #35143398
shurakm1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На входе большой поток разных типов Excel - файлов (типы допустим понимаю из названия файлов)
Дальше эти файлы разбираются и данные пишутся в базу
Проблема в том, что бывают колонки поменяют или страницы или еще какую-нибудь мелочь
И файл уже не распознается - надо переписывать код
Хотелось бы иметь возможность, чтобы пользователь мог подправить к нужному формату файл внешним скриптом
Поток большой и править в ручную нереально - никто не будет
Предложенный вариант кажется сложноватым - была надежда на более простое решение
Пихнуть в ячейку А1 скрипт и сказать Run
...
Рейтинг: 0 / 0
Запуск VBscript в Excel (через Oleobject)
    #35143742
+/-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
+/-
Гость
Вот так подойдет http://support.microsoft.com/kb/219905/ru ?
...
Рейтинг: 0 / 0
Запуск VBscript в Excel (через Oleobject)
    #35143843
shurakm1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
наткнулся на подобное решение
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")
...
Рейтинг: 0 / 0
Запуск VBscript в Excel (через Oleobject)
    #35144057
Фотография Ikar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shurakm1 ioo_excel.VBE.ActiveVBProject.VBComponents.Item(i + 1).CodeModule.InsertLines( 1, "Public Declare Function Beep Lib ' kernel32 ' _")
ИМХО, ошибка здесь. В VBA одинарная кавычка - это начало комментария

------------
С уважением, IKAR

IkarHomeCenter ........ Детский Дворик ........ ГавГав.Инфо
Портал русскоязычной группы пользователей Sybase
...
Рейтинг: 0 / 0
Запуск VBscript в Excel (через Oleobject)
    #35144104
+/-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
+/-
Гость
shurakm1ioo_excel.Application.Run ("TestSub", "Test VBA", "Сейчаc будет произведён вызов Win32 API функции Beep()...")

а макрос TestSub у Вас есть в активной книге?
...
Рейтинг: 0 / 0
Запуск VBscript в Excel (через Oleobject)
    #35144182
Фотография Ikar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
+/-...
а макрос TestSub у Вас есть в активной книге?Так он же его динамически и создает:
shurakm1ioo_excel.VBE.ActiveVBProject.VBComponents.Item(i + 1).CodeModule.InsertLines( 3, "Sub TestSub(Caption as String, Text as String)")

Кстати, shurakm1 , не увидел в Вашем примере строки:
Код: plaintext
ioo_excel.ConnectToNewObject('Excel.Application')
...
Рейтинг: 0 / 0
Запуск VBscript в Excel (через Oleobject)
    #35144185
shurakm1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо поправил

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) через меню "Сервис" - "Макрос" - "Безопасность...".'
...
Рейтинг: 0 / 0
Запуск VBscript в Excel (через Oleobject)
    #35144191
shurakm1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да и разумеется перед этим
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')
...
Рейтинг: 0 / 0
Запуск VBscript в Excel (через Oleobject)
    #35144228
shurakm1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Эээ..
Вообщем какой-то корявый скрипт
Просто дело не в нем, а в самой возможности
...
Рейтинг: 0 / 0
Запуск VBscript в Excel (через Oleobject)
    #35145745
KOLCHOZ_POSTEVENT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Товарищ автор.
Вы меня извините.Ничего нового не скажу.Всё это излагал в своих ранних работах,но проблемма знакомая,поэтому позволю себе...
Во-первых,организация.Хошь ложить инфу на диск-ложи(мой знакомый technical writer сказал,что такое это слово в русите есть,но оно нецензурное)в текст формате,tab delimited.А-а!,Ты его хочешь читать екселем,так его,именно его,ексель классно поднимает,правый клик->open with->excel,а если,ещё,три весёлые буквы txt поменять на xls,то и double click откроет.
А теперь так
Код: plaintext
1.
copy /y *.txt big_file.txt
Объединяет ваши файлы в один и пофиг сколько их.
единственно что,последнея строка,у всех,должна начинаться и закачиваться <return>,чтобы структура от слияния не поплыла.
А дальше,bcp в базу,знаете,как туда таб поделённые файла взлетают?На раз.И причём тут,смена структуры?Вот вам и внешний инструмент на случай перемены столбцов.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Запуск VBscript в Excel (через Oleobject)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]