我正在尝试使用AutoIt将某些单元格从Microsoft Excel复制到另一个程序,但是我一次只能复制一个单元格。有没有一种方法可以复制一组或一组单元格?
我的代码:
Local $Resultcpf = Excel_RangeRead($oWorkbook, default, "L4")
ClipPut($Resultcpf)
$Data = ClipGet()
答案 0 :(得分:0)
“ 还有另一种复制一组范围的方法吗?”
根据Documentation - User Defined Function Reference - _Excel_RangeRead()
:
从指定工作簿和工作表的一个或多个单元格中读取值,公式或显示的文本
示例:
#include <MsgBoxConstants.au3>
#include <Array.au3>
#include <Excel.au3>
Global Const $g_sFileDoc = 'C:\document.xlsx', _
$g_sRange = 'L:L', _; 'L1:L4'
$g_sPrompt = 'Press [CTRL] + [V] to paste contents of %s.'
Global $g_oExcel = _Excel_Open(), _
$g_oBook = _Excel_BookOpen($g_oExcel, $g_sFileDoc)
Global $g_aData = _Excel_RangeRead($g_oBook, Default, $g_oBook.ActiveSheet.Usedrange.Columns($g_sRange))
Global $g_sData = _ArrayToString($g_aData)
_ArrayDisplay($g_aData)
ClipPut($g_sData)
MsgBox($MB_SYSTEMMODAL, @ScriptName, StringFormat($g_sPrompt, $g_sRange))
答案 1 :(得分:0)
您必须用B3:C5
定义两列,或者用A1:A17
定义一列,依此类推。范围必须用冒号“:”符号分隔。
#include-once
#include <Array.au3>
#include <Excel.au3>
Global $sFileExcel = @DesktopDir & '\MyExcelSheet.xlsx'
Global $sExcelRange = 'B3:C5'
Func _readExcelContent()
Local $oExcel = _Excel_Open()
Local $oWorkbook = _Excel_BookOpen($oExcel, $sFileExcel)
Local $aData = _Excel_RangeRead($oWorkbook, Default, $sExcelRange, 2)
_Excel_Close($oExcel, Default, True) ; excel will be closed
Return $aData
EndFunc
Global $aData = _readExcelContent()
_ArrayDisplay($aData) ; this is just a preview of the read data
ClipPut(_ArrayToString($aData))
结果/输出可能是:
text1|
text2|text4
text3|
当然取决于Excel内容。