Нужна консультация специалиста по VBA. Задача приблизительно следующая: на компьютере постоянно открыт Excel. В нем в какую-нибудь неприметную ячейку периодически (примерно раз в полминуты) должно через OPC считываться значение. Пока 0 - продолжаем пинать груши. Как только появляется 1 - открываем с винта определенный файл, отправляем его на определенный принтер (не по умолчанию), файл закрываем, удаляем и так ad infinitum.
Вопрос - задача реализуема средствами VBA, макросами и прочими внутренними экселовскими примочками или нет? Если да - буду делать, если нет - придется отказаться ибо никакого софта ставить нельзя.


VBA для Excel
Автор Serveladkin, 29 Jan 2014 10:09
Сообщений в теме: 9
#1
Отправлено 29 January 2014 - 10:09
No more reseed. Sorry.
#2
Отправлено 29 January 2014 - 10:57
Я не очень большой спец, но кажется, в VBA такие средства есть. А что такое ОРС?
#3
Отправлено 29 January 2014 - 11:16
OPC сервер.
No more reseed. Sorry.
#4
Отправлено 29 January 2014 - 11:24
Банкомат что-ли? А как он сигнал передает? На какой-то порт?
Я не знаю, как работает ОРС, поэтому ничего не могу сказать об обработке входного сигнала. А вот все остальное можно реализовать на VBA.
Я не знаю, как работает ОРС, поэтому ничего не могу сказать об обработке входного сигнала. А вот все остальное можно реализовать на VBA.
#5
Отправлено 29 January 2014 - 12:14
С входным как раз проблем нет, вполне решаемо, главное - чтобы можно было раз в полминуты скрипт запускать. Если можно - гут.
No more reseed. Sorry.
#6
Отправлено 29 January 2014 - 13:15
Exсel - это обязательное условие? Я бы воспользовался Access, там более проще все это организовать.
#7
Отправлено 29 January 2014 - 13:52
Excel - обязательно, да.
No more reseed. Sorry.
#8
Отправлено 29 January 2014 - 15:20
Если сигнал принимается в ячейку InpBox, то что-то типа этого:
Private Sub InpBox_Change() If InpBox = 1 Then Dim Doc1 As Object Dim App1 As Object Set App1 = CreateObject("Word.Application") Set Doc1 = App1.Documents.Open("C:\Users\ИмяФайла.docx") Doc1.PrintOut (, , , prewiev:=False, ActivePrinter:="Имя принтера") End If End Sub
#9
Отправлено 29 January 2014 - 15:39
Спасибо, попробую.
No more reseed. Sorry.
#10
Отправлено 29 January 2014 - 15:51
Забыл, ведь файл еще и удалить надо:
В слове Preview опечатку сделал)))
kill "Имя файла"
В слове Preview опечатку сделал)))
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных