You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求编写LibreOffice Calc宏:跨表复制指定单元格区域

LibreOffice Calc宏:批量复制单元格区域到指定位置

问题描述

需要编写LibreOffice Calc宏,将Sheet1中B2:D5区域的内容复制到Sheet2的A1单元格为起始位置。尝试的代码无效果:

Sub try6

    Dim oSourceSheet as Object
    Dim oTargetSheet as Object
    Dim SourceRange As New com.sun.star.table.CellRangeAddress ' SourceRange with later Sheet1 like properties of what to copy '
    Dim TargetRange As New com.sun.star.table.CellAddress  ' TargetRange with later Sheet2 like properties of what to copy '

    oSourceSheet = ThisComponent.Sheets.getByName("Sheet1")
    oTargetSheet = ThisComponent.Sheets.getByName("Sheet2")   
    oSourceRange = oSourceSheet.getCellRangeByName("B2:D3") ' Specify the range to copy
    oTargetRange = oTargetSheet.getCellRangeByName("A1") ' Specify the header cell for pasting

    oTargetSheet.copyRange(TargetRange, SourceRange) ' Now nothing at all happens when the macro triggering button is pressed
    
End Sub

问题原因

原代码错误地将单元格区域对象赋值给了CellRangeAddress/CellAddress类型的变量,而copyRange方法要求的参数是CellAddress(目标起始单元格地址)和CellRangeAddress(源区域地址),不是直接的单元格区域对象。

正确实现代码

Sub CopyRangeBlock
    Dim oDoc As Object
    Dim oSourceSheet As Object
    Dim oTargetSheet As Object
    Dim oSourceRangeAddr As com.sun.star.table.CellRangeAddress
    Dim oTargetCellAddr As com.sun.star.table.CellAddress
    
    ' 获取当前文档对象
    oDoc = ThisComponent
    
    ' 定位源工作表和目标工作表
    oSourceSheet = oDoc.Sheets.getByName("Sheet1")
    oTargetSheet = oDoc.Sheets.getByName("Sheet2")
    
    ' 获取源区域的CellRangeAddress对象
    oSourceRangeAddr = oSourceSheet.getCellRangeByName("B2:D5").getRangeAddress()
    
    ' 获取目标起始单元格的CellAddress对象
    oTargetCellAddr = oTargetSheet.getCellRangeByName("A1").getCellAddress()
    
    ' 执行块复制
    oTargetSheet.copyRange(oTargetCellAddr, oSourceRangeAddr)
End Sub

代码说明

  • getRangeAddress():从单元格区域对象中提取CellRangeAddress类型的地址信息,这是copyRange方法要求的源参数类型。
  • getCellAddress():从目标单元格中提取CellAddress类型的地址信息,作为复制的起始位置。
  • copyRange方法会自动匹配源区域的大小,将内容完整复制到目标起始位置开始的对应区域。

内容的提问来源于stack exchange,提问作者Micklos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 03:00:15