在ExcelIT中将Excel单元格的内容分配给字符串变量

时间:2014-11-11 22:47:27

标签: excel autoit

我正在编写一个脚本,我想从包含用户名和密码的Excel电子表格中提取单元格值。我希望使用两个变量USERNAME和PASSWORD。我想在每一行使用数据,并在每次循环时向下移动一行。

我查看了由第三方编写的AutoIT和ExcelCOM_UDF中包含的Excel UDF。我似乎找不到我要找的答案。这应该是其中任何一个的基本功能,但我遇到了麻烦。

我不是在寻找讲义,所以只是一个很好的参考页面。但如果你有我需要的片段,它不会伤害我的感情,因为我不打算单独依靠自己编写这段代码。

我的“A”列将包含USERNAME变量,“B”列将包含我的PASSWORD变量。

添加了我目前所拥有的一些代码片段。我还没有试过从Excel中提取任何东西,因为我找不到一个似乎做我想做的命令。希望看到代码可以更好地了解我的目标。

我不希望编程方式修改电子表格,只能从细胞文本中设置字符串变量。

...
    $USERNAME = "usernameHere"  ;I want to set this variable as the text from A1 of c:\test.xls
    $PASSWORD =  "passwordHere" ;I want to set this variable as the text from B1 of c:\test.xls

         ;Username Box
        MouseClick("left",1179,488,1)

        ;Type username
        Send($USERNAME)

        ;Password Box
        MouseClick("left",1179,578,1)

        ;Type Password
        Send($PASSWORD)
...

3 个答案:

答案 0 :(得分:0)

要阅读包含用户名和密码列表的电子表格。此函数创建一个具有两个维度的数组。第一列包含用户名,第二列包含密码。有了这个

#include <Array.au3>
#include <Excel.au3>

Func get_data_Excel($filePathExcel)

   Local $error
   Local $oExcel = _ExcelBookOpen($filePathExcel, 0)
   $oExcel.Application.DisplayAlerts = False
   $oExcel.Application.ScreenUpdating = False
   $error = Int(@error)
   Select
      Case $error = 1
         msgbox(16, "Erreur : Fermeture de l'application", "Code erreur _ExcelBookOpen : 1"&@CRLF&@CRLF&"Impossible de creer l'objet $oExcel avec _ExcelBookOpen")
      Case $error = 2
         msgbox(16, "Erreur : Fermeture de l'application", "Code erreur _ExcelBookOpen : 2"&@CRLF&@CRLF&"Impossible d'ouvrir le fichier "&$filePathExcel&" avec _ExcelBookOpen")
   EndSelect
   If $error > 0 Then
      _ExcelBookClose($oExcel, 0) ; Close without save
      Exit
   EndIf       

   ; Read column A (login) and column B (pwd)
   _ExcelSheetActivate($oExcel, "sheet1")
   $nb_columns = $oExcel.ActiveSheet.UsedRange.Columns.Count   
   $nb_rows = $oExcel.ActiveSheet.UsedRange.Rows.Count
   Local $array_data_excel[$nb_rows][2]
   Local $idx
   For $idx = 0 To $nb_rows-1
      $array_data_excel[$idx][0] = $oExcel.Activesheet.Cells($idx+1, 1).Value
      $array_data_excel[$idx][1] = $oExcel.Activesheet.Cells($idx+1, 2).Value
   Next   

   _ExcelBookClose($oExcel, 0)
   _ArrayDisplay($array_data_excel, "Data from excel file")         
EndFunc

并使用此功能:

get_data_Excel("d:\users.xlsx")

答案 1 :(得分:-1)

#include <Excel.au3>

Local $MyUsernameArray[5] = [ "Hans", "Gerd", "Walter", "Klaus", "Peter" ] ;Your Username Array
Local $MyPasswordArray[5] = [ "12345", "I", "am", "so", "creative" ] ;Your Password Array

 $oExcel =  _ExcelBookNew(1) ;Set this to 0 if you want it to work in background
_ExcelWriteCell ( $oExcel, "Usernames", "A1" ) ;self explaining (i hope)
_ExcelWriteArray ( $oExcel, 2, 1, $MyUsernameArray ,1) ;^
_ExcelWriteCell ( $oExcel, "Passwords", "B1" );^
_ExcelWriteArray ( $oExcel, 2, 2, $MyPasswordArray ,1);^

_ExcelBookSaveAs($oExcel, @ScriptDir & "\PleaseAtleastPostSomeCodeNextTimeSoWeSeeYouTried", "xls") ;save the file
_ExcelBookClose($oExcel, 1, 0) ;exit and save

答案 2 :(得分:-1)

如果您希望通过COM / Automation Excel获得所有控制权,请不要使用UDF,并使用AutoIt ObjCreate 功能深入Com / Automation。使用此功能,您可以在AutoIt

中控制对象Excel

COM / Automation with Excel

1)在目标应用程序的COM对象上创建引用(这里是Excel)

$oExcel = ObjCreate("Excel.Application")

2)在此实例上添加一些选项

With $oExcel
    .Visible = 1
    .WorkBooks.Add
EndWith

3)现在可以开始工作了(添加一些工作表或数据,保存工作簿......)

With $oExcel
    .ActiveWorkbook.Worksheets(1).Name = "SHEET_ONE"
    .ActiveWorkbook.Worksheets(1).Cells(1,1) = "I believe i can fly !!!"
EndWith

黑客1:另存为

; Create new file with one sheet named "SHEET_ONE"
Local $oExcel = ObjCreate("Excel.Application")
With $oExcel
    .SheetsInNewWorkbook = 1
    .Visible = 1
    .WorkBooks.Add
    .ActiveWorkbook.Worksheets(1).Name = "SHEET_ONE"
    .ActiveWorkbook.Worksheets(1).Cells(1,1) = "I believe i can fly !!!"
EndWith

Local $filename = @WorkingDir&"\saveas_excel.xls" 
$oExcel.Application.DisplayAlerts = 0
$oExcel.Application.ScreenUpdating = 0
$oExcel.ActiveWorkBook.SaveAs($filename, 1, Default, Default, Default, Default, 2, 1)
$oExcel.Quit

http://www.autoitscript.fr/forum/viewtopic.php?t=3272&f=11

的更多信息(法语)