vidaLL Posted July 4, 2013 Share Posted July 4, 2013 (edited) Good Night all. im trying to elaborate a script that load information from a notepad or a excel document. I really really have no experience in autoit so i need your help guys, I have the following layout : Information to imput Importation number Enterprise Value Date 1 111111111 1.00 07/01/2013 2 222222222 2.00 07/01/2013 3 333333333 3.00 07/01/2013 4 444444444 4.00 07/01/2013 5 555555555 5.00 07/01/2013 6 666666666 6.00 07/01/2013 7 777777777 7.00 07/01/2013 8 888888888 8.00 07/01/2013 9 999999999 9.00 07/01/2013 10 1111111110 10.00 07/01/2013 #include <IE.au3> $oIE =_IECreate() _IENavigate($oIE, www.fazenda.sp.gov.br/simp) _IELoadWait($oIE) $o_form = _IEFormGetObjByName($oIE,"form1") $o_txtCpf = _IEFormElementGetObjByName($o_form, "txtCpf") $o_txtNumDoc = _IEFormElementGetObjByName($o_form, "txtNumDoc") $O_btnConsultar = _IEFormElementGetObjByName($o_form, "btnConsultar") _IEFormElementSetValue($o_txtcpf, "11111111111") ; txtCpf = Enterprise _IEFormElementSetValue($o_txtNumDoc, "1"); txtNumDoc = Import number $O_btnConsultar.click _IELoadWait($oIE) $o_form = _IEFormGetObjByName($oIE,"_ctl0") $O_btnContinuar = _IEFormElementGetObjByName($o_form, "btnContinuar") $O_btnContinuar.click _IELoadWait($oIE) $o_form = _IEFormGetObjByName($oIE,"Form1") $O_btnGare = _IEFormElementGetObjByName($o_form, "btnGare") $O_btnGare.click _IELoadWait($oIE) $o_form = _IEFormGetObjByName($oIE,"Form1") $o_txtObs = _IEFormElementGetObjByName($o_form, "txtObs") $o_txtDataPagto = _IEFormElementGetObjByName($o_form, "txtDataPagto") $o_txtReceita = _IEFormElementGetObjByName($o_form, "txtReceita") _IEFormElementSetValue($o_txtObs, "1"); txtObs = Import number _IEFormElementSetValue($o_txtDataPagto,"01/08/2013") _IEFormElementSetValue($o_txtReceita,""); txtReceita = value $O_btnGerar.click Imagine that i have almost 250 files to input and generate the collection on web page. Is there a way to create a loop that the field (below)seek information in another document like a txt or excel document ? _IEFormElementSetValue($o_txtcpf, "11111111111") ; txtCpf = Enterprise_IEFormElementSetValue($o_txtNumDoc, "1"); txtNumDoc = Import number _IEFormElementSetValue($o_txtObs, "1"); txtObs = Import number_IEFormElementSetValue($o_txtReceita,""); txtReceita = value Thanks for the attention. Edited July 4, 2013 by vidaLL Link to comment Share on other sites More sharing options...
Moderators big_daddy Posted July 5, 2013 Moderators Share Posted July 5, 2013 Welcome to the AutoIt Forums! Take a look at the _Excel* functions in the help file. Once you have an example at includes your Excel work post any additional questions. My suggestion would be to narrow your questions down to the smallest section of code possible. Feel free to also include any files needed to test and troubleshoot the code. Link to comment Share on other sites More sharing options...
vidaLL Posted July 5, 2013 Author Share Posted July 5, 2013 Welcome to the AutoIt Forums! Take a look at the _Excel* functions in the help file. Once you have an example at includes your Excel work post any additional questions. My suggestion would be to narrow your questions down to the smallest section of code possible. Feel free to also include any files needed to test and troubleshoot the code. Thaks Big_dady, but i just want to know if is possible to use a worksheet for example to load information in a web page. But "My suggestion would be to narrow your questions down to the smallest section of code possible." its impossible for me. Because i have just one day of experience ... Link to comment Share on other sites More sharing options...
Moderators big_daddy Posted July 5, 2013 Moderators Share Posted July 5, 2013 Yes, it is possible. Link to comment Share on other sites More sharing options...
water Posted July 5, 2013 Share Posted July 5, 2013 (edited) Use the Excel UDF that comes with AutoIt. Function _ExcelReadSheetToArray reads the content of a worksheet into an array. Then loop thought the array and write the data into the web page. Edited July 5, 2013 by water My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki Link to comment Share on other sites More sharing options...
vidaLL Posted July 5, 2013 Author Share Posted July 5, 2013 Use the Excel UDF that comes with AutoIt. Function _ExcelReadSheetToArray reads the content of a worksheet into an array. Then loop thought the array and wirte the data into the web page. Do you have a simple example like that ? Link to comment Share on other sites More sharing options...
water Posted July 5, 2013 Share Posted July 5, 2013 Every function comes with an example in the help file. So please scroll down the link I posted above. From your OP it looks like you already managed the IE part. My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki Link to comment Share on other sites More sharing options...
vidaLL Posted July 5, 2013 Author Share Posted July 5, 2013 Yes. I saw but there is no example of two functions references. So sad. Link to comment Share on other sites More sharing options...
water Posted July 5, 2013 Share Posted July 5, 2013 Sorry, but what do you mean by "two functions references"? My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki Link to comment Share on other sites More sharing options...
coryc1123 Posted July 5, 2013 Share Posted July 5, 2013 Just went through the same thing. Take a look at my thread and see if it helps Link to comment Share on other sites More sharing options...
coryc1123 Posted July 5, 2013 Share Posted July 5, 2013 Also it may help if we have the html source code for the website you are posting too. right click the site and click view source Link to comment Share on other sites More sharing options...
vidaLL Posted July 5, 2013 Author Share Posted July 5, 2013 Sorry, but what do you mean by "two functions references"? I mean _Excel and _IE in the same script. Also it may help if we have the html source code for the website you are posting too. right click the site and click view source I don't know to put it here. so the site is www.fazenda.sp.gov.br/simp . Link to comment Share on other sites More sharing options...
Solution water Posted July 5, 2013 Solution Share Posted July 5, 2013 For sure you can have two UDFs in a single script: #include <Excel.au3> #include <IE.au3> Global $sExcelFile = "xxxx" ; <== Add the name of the Excel file here Global $oExcel = _ExcelBookOpen($sExcelFile) Global $aExcelData = _ExcelReadSheetToArray($Excel) For $iRow = 1 To $aExcelData ; Process all read Excel rows _Process($aExcelData[$iRow][1], $aExcelData[$iRow][2], $aExcelData[$iRow][3], $aExcelData[$iRow][4]) Next Now you just have to pack the code from your first post into a function named _Process. The 4 parameters passed to the function are the first 4 fields of the record. E.g: 1, 111111111, 1.00 and 07/01/2013 vidaLL 1 My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki Link to comment Share on other sites More sharing options...
vidaLL Posted July 10, 2013 Author Share Posted July 10, 2013 For sure you can have two UDFs in a single script: #include <Excel.au3> #include <IE.au3> Global $sExcelFile = "xxxx" ; <== Add the name of the Excel file here Global $oExcel = _ExcelBookOpen($sExcelFile) Global $aExcelData = _ExcelReadSheetToArray($Excel) For $iRow = 1 To $aExcelData ; Process all read Excel rows _Process($aExcelData[$iRow][1], $aExcelData[$iRow][2], $aExcelData[$iRow][3], $aExcelData[$iRow][4]) Next Now you just have to pack the code from your first post into a function named _Process. The 4 parameters passed to the function are the first 4 fields of the record. E.g: 1, 111111111, 1.00 and 07/01/2013 Great... I did it ... but no enough as usual How can i make a loop in the process. I am Attaching my Excel file and the script ... I appreciate your useful help. Pasta1.xls TEST.au3 Sorry to keep asking all the time, but this process would help a lot in my work. Thanks again. Link to comment Share on other sites More sharing options...
water Posted July 10, 2013 Share Posted July 10, 2013 That's how I understand your problem so far: To process one record you do the following steps: _IENavigate to the website Get the elements of the form Use _IEFormElementSetValue to fill in the data (this happens 3 times) Click the submit button (this happens 3 times) Wait until the page has finished re-loading After having submitted a record. Do you get the same page to enter the next record? My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki Link to comment Share on other sites More sharing options...
vidaLL Posted July 15, 2013 Author Share Posted July 15, 2013 That's how I understand your problem so far: To process one record you do the following steps: _IENavigate to the website Get the elements of the form Use _IEFormElementSetValue to fill in the data (this happens 3 times) Click the submit button (this happens 3 times) Wait until the page has finished re-loading After having submitted a record. Do you get the same page to enter the next record? Exactly. It's already done but i im trying to put a save with the ID from the webpage but i have no sucess. expandcollapse popup#include <Excel.au3> #include <IE.au3> Global $sExcelFile = "C:\Users\e8760255\Desktop\Pasta1.xls" ; <== Add the name of the Excel file here and your User Global $oExcel = _ExcelBookOpen($sExcelFile) Global $aExcelData = _ExcelReadSheetToArray($oExcel);$oExcel $oIE = _IECreate() _IENavigate($oIE, "www.fazenda.sp.gov.br/simp"); https://webhomolog.fazenda.sp.gov.br/simp $o_form = _IEFormGetObjByName($oIE, "form1") $o_txtCpf = _IEFormElementGetObjByName($o_form, "txtCpf") $o_txtNumDoc = _IEFormElementGetObjByName($o_form, "txtNumDoc") $O_btnConsultar = _IEFormElementGetObjByName($o_form, "btnConsultar") For $iRow = 1 To $aExcelData ; Process all read Excel rows _IEFormElementSetValue($o_txtCpf, $aExcelData[$iRow][1]) _IEFormElementSetValue($o_txtNumDoc, $aExcelData[$iRow][2]) Next $O_btnConsultar.click _IELoadWait($oIE) ;I'LL NOT HAVE THIS SPED ALL TIMES (IN MY EXAMPLE ILL NOT HAVE THIS STEP) $o_form = _IEFormGetObjByName($oIE, "_ctl0") $o_btnContinuar = _IEFormElementGetObjByName($o_form, "btnContinuar") If not isObj($o_btnContinuar) Then $o_form = _IEFormGetObjByName($oIE, "Form1") $O_btnGare = _IEFormElementGetObjByName($o_form, "btnGare") $O_btnGare.click _IELoadWait($oIE) EndIf ; Doc informations $o_form = _IEFormGetObjByName($oIE, "Form1") $o_txtObs = _IEFormElementGetObjByName($o_form, "txtObs") $o_txtDataPagto = _IEFormElementGetObjByName($o_form, "txtDataPagto") $o_txtReceita = _IEFormElementGetObjByName($o_form, "txtReceita") For $iRow = 1 To $aExcelData ; Process all read Excel rows _IEFormElementSetValue($o_txtObs, $aExcelData[$iRow][3]) _IEFormElementSetValue($o_txtDataPagto, $aExcelData[$iRow][4]) _IEFormElementSetValue($o_txtReceita, $aExcelData[$iRow][5]) Next $o_form = _IEFormGetObjByName($oIE, "Form1") $o_btnCalculoProd = _IEFormElementGetObjByName($o_form, "btnCalculoProd") $o_btnCalculoProd.click _IELoadWait($oIE) $o_form = _IEFormGetObjByName($oIE, "Form1") $o_btnGera = _IEFormElementGetObjByName($o_form, "btnGera") $o_btnGera.click _IELoadWait($oIE) $o_form = _IEFormGetObjByName($oIE, "Form1");_ctl0 $o_gareLink = _IEFormElementGetObjByName($o_form, "gareLink") $o_gareLink.click _IELoadWait($oIE) The ID $o_garelink is the button that will generate a PDF. Is there a way to save it in my Desktop/Test ? I tryied something with _IEaction and InetGet(i found the problem that each time that i create a PDF the webpage will change the name). Link to comment Share on other sites More sharing options...
vidaLL Posted July 16, 2013 Author Share Posted July 16, 2013 After much effort I finally got to make the script do almost every step, except one .... LoopDo not know how to do each time you run the whole process, it begins to read the next line of excel. Any suggestions? Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now