Страницы: 1 2 След.
RSS
Как с .VBS создать .exe
 
Здравствуйте, прошу опять Вашей помощи.
В связи с тем что я лентяй, хочу попробовать сделать программку которая будет выгружать в файл любого формата, данные отработанного скрипта с базы ORACLE.

B.Key, предоставил рабочий скрипт:
Код
Set cn = CreateObject("ADODB.Connection")
cn.Open "Provider=MSDAORA.1;Data Source=***;Password=***;User ID=***"
'========================================================================================
OutputFile = "\\Srv\ВашПуть\clients.csv"
sSql = "select * from tbl"
Set Rs = GetRs(sSql, cn)
Call ExportTXT(Rs, OutputFile, ";", vbCrLf)
Rs.Close
Set Rs = Nothing
MsgBox "Готово! Контрагенты выгружены!"

Function GetRs(sstr, cn)
Set rstdata = CreateObject("ADODB.Recordset")
    rstdata.Open sstr, cn
    Set GetRs = rstdata
Set rstdata = Nothing
End Function
Function ExportTXT(Rs, FileName, DelimCol, DelimRow)
Dim AllText, fld
For Each fld In Rs.Fields
    If AllText = "" Then
        AllText = fld.Name
    Else
        AllText = AllText & DelimCol & fld.Name
    End If
Next
AllText = AllText & DelimRow
AllText = AllText & Rs.GetString(, , DelimCol, DelimRow)
With CreateObject("Scripting.FileSystemObject").CreateTextFile(FileName, True)
    .Write AllText
End With
End Function 
И сам вопрос как его запихнуть в .exe?
Пробовал через программу  VBs To Exe но ничего не работает.
Отработал просто в Excel все работает )
Изменено: Xapa6apga - 08.01.2015 12:13:57
 
И зачем там появилось sub/end sub?
 
Hugo, не когда такого не делал, думал что нужно добавить...
 
VBA - встроенный язык office. Из него exe создать не получиться.
 
sub/end sub нужно для макроса в VBA. А vbs уже сам по себе процедура, там не нужно. Но внутри неё могут быть другие процедуры sub/end sub
 
gruny1985,тут речь идёт о vbs, из него нужно сделать exe. И это как раз получится (без "ь")
 
Hugo, Спасибо за помощь...
Все ровно не работает.

Что я делаю:
1) Откорректировал скрипт под себя (Провайдер MSDAORA), путь рабочий стол, логин и пароль ввел свой
-Сохраняю всё это дело в .vbs  с помощью Notepad++
2) Запускаю программу Vbs to Exe v2.0.1
-VBS файл указую путь своего .vbs
-Сохранить указую путь куда нужно сохранить .exe
-В редактор вставлю этот же скрипт .vbs
Нажал кнопку "Компилировать"
Файл exe есть но ничего не делает (
Изменено: Xapa6apga - 08.01.2015 12:26:32
 
Не помню как делалось в Vbs to Exe - но какая-то программа при запуске этого exe просто распаковывала этот скрипт в темп и выполняла его оттуда. Т.е. если скрипт работал - должен работать. Но рабочий каталог будет темп, а не каталог где exe.
 
Зачем вообще компилировать в exe ?
Для того что бы пользователи код не видели?
Если вам необходимо запускать vbs из планировщика заданий, то он прекрасно запускается, так как vbs  является исполняемым файлом.
Изменено: B.Key - 08.01.2015 12:28:54
 
в планировщике заданий также можно и параметры передавать, если это конечно необходимо.
 
B.Key, а вы в каком планировщике такое делаете.
Компилирую, что б запустить потом... ну и что б код не видели. )
 
Цитата
Xapa6apga пишет: каком планировщике такое делаете
о стандартном винды, делаете задание по расписанию, указываете какой скрипт исполнить и все (я обычно добавляю формирование лога и отправку его почтой мне в почту), больше ничего делать не надо все работает на автомате.
 
я в exe не компилировал, да и лишнее это, весь процесс происходит на серваке с ограниченным доступом, пользователям доставляется все почтой, либо обновляются файлы в папке пользователя. ну и нужные данные , курсы индексы и прочая инфа загружается в базу.
 
Пробую через стандартный планировщик:
Вот такая ошибка


Windows 7 X64 Oracle 10g
Изменено: Xapa6apga - 08.01.2015 13:06:30
 
(Windows 7 X64 Oracle 10g) связачка не очень, есть очень много проблем между драйверами 32 битной (oracle) и 64 (windows). подружить их совсем не просто.

------------
Мы сделали проще, развернули виртуалку win server 2008 X 32 и все операции повесили там.
 
Думал провайдер заменить на OraOLEDB.Oracle, так как пишут что MSDAORA сдохла на х64.
Но тогда
 
она не сдохла, вся проблема  как его ставить, если клиент стоит 64 битный то все в порядке, можно через костыль 64 битной excel реализовать.
 
какой клиент работает у Вас из excel ?
 
B.Key MSDAORA
 
из excel работает? добавив Sub     / End Sub
 
B.Key, ага! В начале темы отписал)
 
Код
const xlsFileName = "D:\task\XLS\Load.xls" ' тута имя xls файла
set fso = createobject("Scripting.FileSystemObject")
set a = createobject("excel.application")
a.visible=false
set b = a.workbooks.open(xlsFileName)
b.Application.Run "test" ' Имя Вашего макроса в excel
b.close true
a.quit


Укажите нужные параметры, сохраните в vbs и назначьте задание на исполнение
В excel вставьте код  с соответствующим названием процедуры, сохраните и используйте.
 
B.Key, костыль конечно уфуф, но скорей всего мой запрос так работать не будет ((
Как попробую отпишу

Огромное спасибо )
Изменено: Xapa6apga - 08.01.2015 15:11:47
 
НА select sysdate from dual в csv всё окей, сейчас запущу 650000 строк посмотрим сколько будет работать)
 
да какая разница сколько он будет работать :) (у меня все процедуры начинают отрабатывать в 5 утра и 6 уже вся нужная инфа у конечных пользователей), вся  фишка в том что большой объем данных excel плохо переваривает,  за исключением PowerPivot (Хотя это не excel а надстройка к нему), поэтому подготовленный набор данных, выгружаем в сторонний файл хранения данных и уже эти данные используем для расчетов в excel.
-------
 
Я просто как-то пробовал через Xstarter запуск макроса, так оно у меня через 20 мин выдавало ошибку, что нет больше памяти и всё. )
Лично у меня где-то 30 отчётов и только один этот остался который не как не могу закинуть на автомат (
 
ну если не поможет тогда только
тынц
 
Будем пробовать, спасибо огромное за потраченное время )
 
Беда... и что с ним делать ?! (
 
ищите 32 битную машину и работайте через нее :(
Страницы: 1 2 След.
Наверх