Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.96/25: Рейтинг темы: голосов - 25, средняя оценка - 4.96
0 / 0 / 0
Регистрация: 29.11.2013
Сообщений: 7
1

Как перевести vba в vbs или exe

31.03.2014, 22:02. Показов 5130. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Друзья, есть макрос, никоим образом не использующий книгу Excel. Работает с внешним файлом - следит за его изменением, при наличии нужных изменений запускает внешний исполняемый файл. Вопрос такой - каким образом можно этот vba отвязать от экселя, чтобы он работал самостоятельно, без запуска Excel.

Если просто скопировать код в .vbs, то ошибок море (vbs не поддерживает львиную долю того, что есть в vba), если же делать исполняемый файл через visual studio, то, судя по всему, тоже чуть ли не полностью придется переписывать.

Подскажите, хотя бы в каком направлении копать.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.03.2014, 22:02
Ответы с готовыми решениями:

Как отправить/получить файл на ftp из VBA или VBS
Подскажите,или ещё лучше - поделитель живым примером, как отправить/получить файл на ftp с...

Создание бинарного файла из vbs / Как создать exe файл из vbs
Имеется файл с расширением exe. Нужно как-нибудь занести массив байт в скрипт, и чтоб потом этот...

Cmd перевести в js или vbs
Помогите cmd перевести в js или vbs. Хотелось бы иметь нормальные диалоговые окна, а не сплошные...

Запуск .exe или .vbs файла из asp скрипта
set WSHShell = Server.CreateObject("WScript.Shell") WSHShell.Exec "c:Inetpublotushd-lotus.exe " ...

3
15151 / 6424 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
31.03.2014, 22:11 2
Чтобы что-либо подсказать, надо видеть макрос.
0
0 / 0 / 0
Регистрация: 29.11.2013
Сообщений: 7
31.03.2014, 22:23  [ТС] 3
Собственно, макрос, который нужно переделать в vbs:

sFileName = Year(Date) & Right("0" & Month(Date), 2) & Right("0" & Day(Date), 2) & ".log"
sFileName = "C:\grand\software\" & sFileName

MyLocation = 0

'Открываем для чтения файл логов за сегодняшний день
Open sFileName For Binary Access Read As #1

'Считываем существующий файл логов:
Do While MyLocation < LOF(1)
Line Input #1, textline
MyLocation = Loc(1)
Loop

'Бесконечный цикл, парсящий, ожидая появления искомой строки:
Do
On Error Resume Next 'изменяем обработку ошибок, чтобы игнорировать ошибку чтения конца файла.

Line Input #1, textline
'Если это искомая строка вида 10:04:41[interface] <c t="tp" i="34"></c>
If Right(Left(textline, 33), 25) = "[interface] <c t=" & Chr(34) & "tp" & Chr(34) & " i=" & Chr(34) And _
Right(textline, 6) = Chr(34) & "></c>" Then

'Запускаем программу:
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run "C:\grand\software\grand.exe", 1, False

End If

On Error GoTo 0
textline = ""
Loop
Close #1
0
15151 / 6424 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
01.04.2014, 01:34 4
Перевести на VBS несложно (судя по 1-й строке код изначально был в VBS, т.к. на VB/VBA проще было бы написать sFileName = Format(Date, "YYYYMMDD.log") ).
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
sFileName = Year(Date) & Right("0" & Month(Date), 2) & Right("0" & Day(Date), 2) & ".log"
sFileName = "C:\grand\software\" & sFileName
'Открываем для чтения файл логов за сегодняшний день
With CreateObject("Scripting.FileSystemObject").OpenTextFile(sFileName)
'Считываем существующий файл логов:
  While Not .AtEndOfStream
    textline = .ReadLine
  Wend
'Бесконечный цикл, парсящий, ожидая появления искомой строки:
  Do
'Если это искомая строка вида 10:04:41[interface] <c t="tp" i="34"></c>
    If Mid(textline, 9, 25) = "[interface] <c t=""tp"" i=""" And _
      Right(textline, 6) = """></c>" Then
'Запускаем программу:
        Set WshShell = CreateObject("WScript.Shell")
        WshShell.Run "C:\grand\software\grand.exe", 1, False
    End If
'Ожидаем появления нового текста в файле
    While .AtEndOfStream
      wscript.sleep 1000 'пауза 1 секунда, будет работать только в VBS!
    Wend
'Читаем новую строку
    textline = .ReadLine
  Loop
End With
Все это будет работать и в VB/VBA, за исключением строки 20 - если будете отлаживать, закомментируйте ее.
Чтобы закончить работу скрипта, прибейте процесс wscript.exe в Диспетчере задач.
0
01.04.2014, 01:34
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.04.2014, 01:34
Помогаю со студенческими работами здесь

Как запустить скрипт VBS из VBA Excel?
Сабж. Сильно не бейте, в скриптах я ламер :))

Как вызвать VBA макрос с параметром из VBS скрипта?
Есть готовый макрос, который печатает выбранные части загружаемого XML-документа. Sub XMLUPL(Path...

Как на vbs или bat или cmd изменить размер окна браузера?
Здравствуйте. Нужен скрипт vbs для изменения уже открытого окна мазилы размером 600х800. Нашёл...

Как запустить VBS- или JS-скрипт через Task Sheduler или GPO?
Уважаемые профессионалы! Крайне необходимы Ваши рекомендации, по части решения следующей, и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru