对于这个需求,本来是想用openpyxl,毕竟更熟悉Python,上网搜了之后,发现有更简单的方法VBA
例如要在Excel表进行处理,每隔100行就要插入8行一样的固定的内容
下面展示一些 VBA代码
。
// VBA 代码
Sub 宏1()
i = 101 '第一次复制的位置在101行
Do While i < ActiveSheet.UsedRange.Rows.Count + 1
Sheets("Sheet1").Select '选择工作表sheet1
Range("A1:R8").Select '选择sheet1中需要复制的区域,这里选择了8行
Selection.Copy '执行copy操作
Sheets("Sheet2").Select '选择工作表sheet2,要在此表中进行隔行插入
Range("A" & i).Select '选择开始黏贴的单元格,选一个单元格即可,经过循环,会依次选择A101,A209,A317......
Selection.EntireRow.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove '插入一行空白行,不插入的话,源内容会被覆盖,不用插入8行,一行即可
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False '执行黏贴操作
i = i + 108 '执行一次循环,插入8行,行数+108
Loop
End Sub
请注意:复制操作要放到循环里面,否则这会执行一次循环就报错,因为工作表有保护,一次复制黏贴后会清空粘贴板的内容,如果你想放循环外面的话,想办法把工作表保护去掉应该就行了