怎么用JS宏把同目录下的多个工作表合到一个工作表里 除了第一个表其他的表的表头不要合进去。工作表里的图片可以一起随着合并吗
时间: 2024-03-02 16:54:39 浏览: 21
可以使用以下的WPS JS宏代码来实现你的需求:
```
// 获取当前活动的工作簿
var workbook = WPS.Application.ActiveWorkbook;
// 获取当前工作簿所在的目录
var currentPath = workbook.Path;
// 获取当前目录下的所有Excel文件
var files = WPS.FileSystem.GetFiles(currentPath, "*.xls*");
// 创建新的工作表
var newSheet = workbook.Sheets.Add();
// 遍历所有Excel文件
for(var i = 0; i < files.Count; i++) {
var currentFile = files.Item(i + 1);
if(currentFile != workbook.FullName) {
// 打开当前Excel文件
var currentWorkbook = WPS.Application.Workbooks.Open(currentFile);
// 获取当前工作表中的数据范围
var dataRange = currentWorkbook.Sheets(1).UsedRange;
// 获取当前工作表中的行数和列数
var dataRows = dataRange.Rows.Count;
var dataColumns = dataRange.Columns.Count;
// 将当前工作表中的数据复制到新的工作表中
dataRange.Copy(newSheet.Cells(workbook.Sheets(1).UsedRange.Rows.Count + 2, 1));
// 更新新的工作表中的行数
workbook.Sheets(1).Activate();
var newSheetDataRange = newSheet.Range("A" + (workbook.Sheets(1).UsedRange.Rows.Count + 1) + ":" + WPS.Application.Cells(dataRows + workbook.Sheets(1).UsedRange.Rows.Count, dataColumns).Address);
newSheetDataRange.Select();
WPS.Application.Selection.Copy();
currentWorkbook.Close(false);
}
}
// 将新工作表中的所有图片复制到第一个工作表中
for(var j = 1; j <= newSheet.Shapes.Count; j++) {
var currentShape = newSheet.Shapes(j);
if(currentShape.Type == 13) {
// 复制图片到第一个工作表中
currentShape.Copy();
workbook.Sheets(1).Activate();
var currentRange = workbook.Sheets(1).Range("A" + (workbook.Sheets(1).UsedRange.Rows.Count + 1));
currentRange.Select();
workbook.ActiveSheet.Paste();
}
}
```
这段代码将会遍历当前工作簿所在的目录下的所有Excel文件,将这些文件中除第一个表以外的所有工作表中的数据复制到一个新的工作表中,并将新工作表中的所有图片复制到第一个工作表中。在复制数据时,除第一个表以外的其他表的表头不会被复制到新工作表中。在复制图片时,所有图片都会被复制到第一个工作表中,并且图片的位置会与原来的位置一致。