gpt4 book ai didi

libreoffice - 如何从 Libreoffice Calc 工作簿的所有工作表中删除所有图像

转载 作者:行者123 更新时间:2023-12-05 01:18:23 29 4
gpt4 key购买 nike

我有一个 Libreoffice Calc 工作簿,其中有 60 多张纸,其中许多都有复制到它们的大量图像。我想用 Calc Basic 宏删除所有图像。我尝试了以下失败并出现基本运行时错误,提示 Property or method not found: Pictures.

Sub DeleteAllPics()
Dim Pic As Object
For Each Pic In ThisComponent.CurrentController.ActiveSheet.Pictures
Pic.Delete
Next Pic
End Sub

我还尝试了以下失败并出现基本运行时错误 Object variable not set.

Sub deleteAllPics()
Dim wkSheet As Object
For Each wkSheet In ThisWorkbook.ThisComponent.Sheets.getByName()
Dim Pict As Object
For Each Pict In wkSheet
Pict.Delete
Next Pict
Next wkSheet
End Sub

以下代码将从 Libreoffice Writer 文档的所有页面中删除所有图片:

   Sub RemoveImages
Dim oDoc as Object
oDoc = ThisComponent
Dim oGraphics as Object
oGraphics = oDoc.getGraphicObjects()
Dim oImg as Object
For Each oImg in oGraphics
oDoc.getText().removeTextContent(oImg)
Next
End Sub

我需要一个类似于上述代码的代码来从 Calc 工作簿的所有工作表中删除所有图像。请帮助我。

最佳答案

对于电子表格,您需要获取 XDrawPage对于每张纸。

这是正确的 LibreOffice Basic 代码。用 LibreOffice 的说法,它称为电子表格或文档,而不是工作簿。此外,For Each 是从 VBA 借来的,不适用于 XDrawPage。 (可以使用 For Each 枚举工作表,但为了保持一致,首选标准 For 循环。)

Sub DeleteAllPics()
Dim oDoc As Object
Dim oDrawPage As Object
Dim oShape As Object
Dim iShape As Integer
Dim iSheet As Integer
oDoc = ThisComponent
For iSheet = 0 To oDoc.getSheets().getCount() - 1
oDrawPage = oDoc.getSheets().getByIndex(iSheet).getDrawPage()
For iShape = oDrawPage.getCount() - 1 To 0 Step -1
oShape = oDrawPage.getByIndex(i)
oDrawPage.remove(oShape)
Next iShape
Next iSheet
End Sub

关于libreoffice - 如何从 Libreoffice Calc 工作簿的所有工作表中删除所有图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46048667/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com