从Excel复制单元格范围

问题描述 投票:0回答:2

我正在尝试使用AutoIt将一些单元格从Microsoft Excel复制到另一个程序,但我一次只能复制一个单元格。有没有办法复制一组或一系列细胞?

我的代码:

Local $Resultcpf = Excel_RangeRead($oWorkbook, default, "L4")

ClipPut($Resultcpf)
$Data = ClipGet()
excel autoit
2个回答
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))

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内容。

© www.soinside.com 2019 - 2024. All rights reserved.