VB代码:
Function ConvertCellToImageAndPlace(n As Long, m As Long)Dim sourceCell As RangeSet sourceCell = Sheets("Sheet2").Cells(n, m)sourceCell.CopyPicture Appearance:=xlScreen, Format:=xlPictureDim targetCell As RangeSet targetCell = Sheets("Sheet3").Cells(n, m)Sheets("Sheet3").Paste targetCellDim shp As ShapeSet shp = Sheets("Sheet3").Shapes(Sheets("Sheet3").Shapes.Count)shp.Left = targetCell.Leftshp.Top = targetCell.Topshp.Width = targetCell.Widthshp.Height = targetCell.Height
End Function
Function ClearSheet3Completely()Sheets("Sheet3").Cells.ClearContents '清空单元格内容Sheets("Sheet3").Cells.ClearFormats '清空单元格格式Dim shp As ShapeFor Each shp In Sheets("Sheet3").Shapesshp.DeleteNext shp
End Function
Sub AutoPrintPicture()ClearSheet3CompletelyFor i = 1 To 10Sheets("Sheet2").Cells(10, 3) = i + 201ConvertCellToImageAndPlace 10, 3ConvertCellToImageAndPlace 10, 2ConvertCellToImageAndPlace 10 + 1, 2ConvertCellToImageAndPlace 10 + 2, 2Sheets("Sheet3").PrintOutClearSheet3CompletelyNext iEnd Sub
JS代码:
function convertCellToImageAndPlace(row, col) {// 获取源单元格let sourceCell = Sheets("Sheet2").Cells(row, col);// 复制为图片,明确参数类型为数字,根据 WPS 的文档可能需要使用特定的数值代表外观sourceCell.CopyPicture();// 获取目标单元格let targetCell = Sheets("Sheet3").Cells(row, col);// 粘贴到目标单元格Sheets("Sheet3").Paste(targetCell);
}function clearSheet3Completely(){// 获取当前Sheet表对象var app = Application.Application,acSh = app.Sheets("Sheet3");// 循环遍历当前Sheet表中的所有图形for (let pic of acSh.Shapes){// 如果当前为"图片"、"==13",执行删除操作if (pic.Type == msoPicture){// Shape.TopLeftCell,代表位于对象左上角下方的单元格var r = pic.TopLeftCell.Row,c = pic.TopLeftCell.Column;pic.Delete();Console.log(`${r}行${c}列图片删除成功@SMFY`);}}
}function autoPrintPicture() {//clearSheet3Completely();for (let i = 1; i <= 3;i++) {Sheets("Sheet2").Cells(10, 3).Value2 = i + 1;convertCellToImageAndPlace(10, 3);convertCellToImageAndPlace(10, 2);convertCellToImageAndPlace(11, 2);convertCellToImageAndPlace(12, 2);Sheets("Sheet3").PrintOut();clearSheet3Completely();}
}
总结:
convertCellToImageAndPlace函数:
从 “Sheet2” 工作表的指定单元格(由参数n和m确定)复制内容为图片。
将图片粘贴到 “Sheet3” 工作表的对应单元格。
获取 “Sheet3” 工作表中刚刚粘贴的图片对应的形状对象(即最后一个形状)。
如果形状对象存在,将其位置和大小设置为目标单元格的位置和大小,并返回该形状对象。
clearSheet3Completely函数:
清空 “Sheet3” 工作表的所有单元格内容。
清空 “Sheet3” 工作表的所有单元格格式。
遍历并删除 “Sheet3” 工作表中的所有形状。
autoPrintPicture函数:
首先调用clearSheet3Completely函数清空 “Sheet3” 工作表。
循环 10 次,每次循环: 在 “Sheet2” 工作表的特定单元格(第 10 行第 3 列)设置一个值,该值为当前循环次数加 201。
分别调用convertCellToImageAndPlace函数将 “Sheet2” 工作表的特定四个位置(10,3)、(10,2)、(11,2)、(12,2)的单元格内容复制为图片并放置在 “Sheet3” 工作表的对应位置,同时获取对应的形状对象。 打印 “Sheet3” 工作表。
再次调用clearSheet3Completely函数清空 “Sheet3” 工作表,为下一次循环做准备。