Что нового

Добавка 1 в файл эксель - каждые 15 секунд

Visors

Новичок
Сообщения
58
Репутация
0
Версия AutoIt: 3.3.14

Описание:
Здравствуйте. Помогите разобраться.
Подскажите код скрипта autoit - который каждые 15 секунд - добавляет 1 в уже открытый файл эксель "file.xls" (в ячейку D4, лист3).
То есть, чем больше времени прошло - тем больше число будет в ячейке D4, уже открытого файла file.xls.

Нашел на этом форуме в чем-то похожий скрипт, который каждые 10 минут добавляет 1, в файл 1.txt
Выглядит он так:

Код:
$iCount = 0
$iTimeOut = 10*60*1000 ; 10 min
$sMyFile = @ScriptDir & '\1.txt'
HotKeySet('{Esc}', '_Exit')
$iStart = TimerInit()
While 1
    If TimerDiff($iStart) > $iTimeOut Then
        _My_Func()
        $iStart = TimerInit()
    EndIf
    Sleep(50)
WEnd

Func _My_Func()
    $iData = FileReadLine($sMyFile)
    $iData += 1
    ConsoleWrite($iData&@CR)
    $hMyFile = FileOpen($sMyFile, 2)
    FileWrite($hMyFile, $iData)
    FileClose($hMyFile)
EndFunc   ;==>_My_Func

Func _Exit()
    Exit
EndFunc   ;==>_Exit



Но вот как этот скрипт заставить добавлять 1 не в закрытый файл 1.txt, а в открытый файл file.xls - я не знаю.

Примечания:
Интересует не макрос VBA, а скрипт autoit.
 

Вложения

  • 1435345.rar
    6.5 КБ · Просмотры: 2

NickSpirit

Знающий
Сообщения
44
Репутация
5
Код:
#include <excel.au3>
HotKeySet('q','_Exit')

Global $oExcel=_Excel_Open(True)
$oWorkBook=_Excel_BookOpen($oExcel,@ScriptDir&'\file.xls')

$iTimeOut = 15*1000 ; 15 s
HotKeySet('{Esc}', '_Exit')
$iStart = TimerInit()
While 1
    If TimerDiff($iStart) > $iTimeOut Then
        _My_Func()
        $iStart = TimerInit()
    EndIf
    Sleep(50)
WEnd

Func _My_Func()
	$sResult = _Excel_RangeRead($oWorkbook, Default, 'D4')
	$sResult = $sResult+1
	_Excel_RangeWrite($oWorkBook,Default,$sResult,'D4')
EndFunc

Func _Exit()
    _Excel_Close($oExcel)
    Exit
EndFunc
 
Автор
V

Visors

Новичок
Сообщения
58
Репутация
0
NickSpirit.
Ваш скрипт почему-то открывает file.xls - когда тот закрыт.
Скрипт в таком случае - вообще ничего не должен делать (при неоткрытом файле file.xls).

По-умолчанию подразумевается, что file.xls - открываю только я, а не скрипт.
 

NickSpirit

Знающий
Сообщения
44
Репутация
5
Код:
#include <excel.au3>
HotKeySet('q','_Exit')

While 1
	$oWorkBook=_Excel_BookAttach("file.xls","FileName")
	If @error=1 Then
		Sleep(1000)
	Else
		ExitLoop
	EndIf
WEnd
$iTimeOut = 15*1000 ; 15 s
HotKeySet('{Esc}', '_Exit')
$iStart = TimerInit()
While 1
    If TimerDiff($iStart) > $iTimeOut Then
        _My_Func()
        $iStart = TimerInit()
    EndIf
    Sleep(50)
WEnd

Func _My_Func()
    $sResult = _Excel_RangeRead($oWorkbook, Default, 'D4')
    $sResult = $sResult+1
    _Excel_RangeWrite($oWorkBook,Default,$sResult,'D4')
EndFunc

Func _Exit()
    Exit
EndFunc



По хорошему нужно бы сделать так чтобы при закрытии файла скрипт бы ставился на паузу. Ну и если вдруг Вам нужно работать с другими листами данного документа пока работает скрипт то принудительно указать еще и лист документа на котором находится ячейка.
 
Автор
V

Visors

Новичок
Сообщения
58
Репутация
0
"... указать еще и лист документа на котором находится ячейка...."

NickSpirit , подскажите, как в коде указать лист документа, где находится ячейка ?
 
Автор
V

Visors

Новичок
Сообщения
58
Репутация
0
NickSpirit, спасибо.
Теперь все понятно.
 
Верх