Что нового

Данные из GUI в EXCEL

rogalicc

Новичок
Сообщения
7
Репутация
0
Добрый день,

помогите пожалуйста разобраться как корректно сделать скрипт со следующими параметрами, при вводе 13 (числовых) символов в GUI открывается excel и после этого введеное значение вставляется в определенную ячейку, небольшая пауза (sleep 1000-2000), и потом GUI он топ с активным курсором и все по новой.

Очень грубый пример ниже (без желаемого фунционала, кнопка старт не нужна).

Код:
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <Clipboard.au3>
#include <Excel.au3>
#include <Array.au3>


$Form1 = GUICreate("Draft", 352, 150, 372, 224)
$Label1 = GUICtrlCreateLabel("13 Characters to scan", 6, 42, 126, 17)
$Label4 = GUICtrlCreateLabel("Draft", 38, 8, 236, 17)
$Input1 = GUICtrlCreateInput("", 148, 40, 129, 21)
$Button1 = GUICtrlCreateButton("Старт", 24, 80, 89, 33)
$Button2 = GUICtrlCreateButton("Exit", 168, 80, 89, 33)
$path = @HomeDrive & '\Test\Test.xls'
GUISetState(@SW_SHOW)


While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Button1
            $Var1 = GUICtrlRead($Input1)
            Test_var($Var1)
        Case $Button2
            Exit
    EndSwitch
WEnd

Func Test_var($Var1)
   ; For $i = 1 To $Var1
   $oExcel = _ExcelBookOpen($path, 1)
_ExcelWriteArray($oExcel, 6, 11, $Var1)

EndFunc
 

MaximK

Знающий
Сообщения
33
Репутация
5
Попробуй так
Код:
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <Clipboard.au3>
#include <Excel.au3>
#include <Array.au3>


$Form1 = GUICreate("Draft", 352, 150, 372, 224)
$Label1 = GUICtrlCreateLabel("13 Characters to scan", 6, 42, 126, 17)
$Label4 = GUICtrlCreateLabel("Draft", 38, 8, 236, 17)
$Input1 = GUICtrlCreateInput("", 148, 40, 129, 21)
$Button1 = GUICtrlCreateButton("Старт", 24, 80, 89, 33)
$Button2 = GUICtrlCreateButton("Exit", 168, 80, 89, 33)
$path = @HomeDrive & '\Test\Test.xls'
GUISetState(@SW_SHOW)


While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Button1
            $Var1 = GUICtrlRead($Input1)
            Test_var($Var1)
        Case $Button2
            Exit
    EndSwitch
WEnd

Func Test_var($Var1)
   ;$oExcel = _ExcelBookOpen($path, 1)
   $oExcel=_ExcelBookNew()
   $tab=StringSplit($Var1,",")
_ExcelWriteArray($oExcel, 6, 11, $tab)

EndFunc
 

WSWR

AutoIT Гуру
Сообщения
941
Репутация
363
rogalicc

Код:
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <Clipboard.au3>
#include <Excel.au3>
#include <Array.au3>
#include <EditConstants.au3>

Global $Input1, $Form1, $oExcel, $iN = 1
$path = @ScriptDir & '\Test.xls'

$Form1 = GUICreate('Draft', 352, 150, 372, 224)
$Label1 = GUICtrlCreateLabel('13 Characters to scan', 6, 42, 126, 17)
$Label4 = GUICtrlCreateLabel('Draft', 38, 8, 236, 17)
$Input1 = GUICtrlCreateInput('', 148, 40, 129, 21, $ES_NUMBER)
GUIRegisterMsg($WM_COMMAND, '_WM_COMMAND')
;~ $Button1 = GUICtrlCreateButton('Старт', 24, 80, 89, 33)
$Button2 = GUICtrlCreateButton('Exit', 168, 80, 89, 33)
GUISetState(@SW_SHOW)
WinSetOnTop($Form1, '', 1)

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Button2
			Exit
	EndSwitch
WEnd


Func Test_var($Var1)
	WinSetOnTop($Form1, '', 0)
	GUISetState(@SW_DISABLE, $Form1)
	If Not IsObj($oExcel) Then $oExcel = _ExcelBookOpen($path, 1)

	$sReadCell = _ExcelReadCell($oExcel, 1, $iN)
	If $sReadCell <> '' Then $iN += 1

	_ExcelWriteCell($oExcel, $Var1, 1, $iN)

	Sleep(3000)
	GUICtrlSetData($Input1, '')

	GUISetState(@SW_ENABLE, $Form1)
	WinActivate($Form1)
	WinSetOnTop($Form1, '', 1)
EndFunc   ;==>Test_var


Func _WM_COMMAND($hWnd, $iMsg, $wParam, $lParam)
	Local $sData
	Switch BitShift($wParam, 16)
		Case $EN_CHANGE
			Switch BitAND($wParam, 0xFFFF)
				Case $Input1
					$sData = GUICtrlRead($Input1)
					If StringLen($sData) = 13 Then Test_var($sData)
			EndSwitch
	EndSwitch
	Return $GUI_RUNDEFMSG
EndFunc   ;==>_WM_COMMAND
 
Верх