vba:在每个文件中插入一列到一个文件夹和子文件夹中



我需要修改所有的excel文件存储到一个文件夹(和子文件夹)。操作是:打开文件找到合适的工作表插入列并为其指定名称修改右边的列并更改其名称从一个列复制样式到全新的保存文件继续下一个文件。

在这里你可以找到我的代码:

Sub LoopFiles()
Dim Filename, Pathname As String
Dim wb As Workbook
Pathname = ("C:scriptest")
Filename = Dir(Pathname & "*2021.xlsm")
Do While Filename <> ""
Set wb = Workbooks.Open(Pathname & Filename)
InsertCol wb
wb.Close SaveChanges:=True
Filename = Dir()
Loop
End Sub

,第二个函数是:

Sub InsertCol(wb As Workbook)
With wb
Worksheets("colours").Activate
Columns("E:E").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("E2").Select
ActiveCell.FormulaR1C1 = "RED"
Range("F2").Select
ActiveCell.FormulaR1C1 = "GREEN"
Range("F2").Select
Selection.Copy
Range("E2").Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
ActiveWorkbook.Save
End With
End Sub

我将查询保存到一个文件中,但由于某种原因,excel只在该文件中应用更改。提前感谢!

您将wb传递给sub,并在其上启动With块。这很好。但是你不用它。所有的活动/选择的东西都是坏的。

特别注意.ColumnsRange之前。这就是指向With对象

的内容这里有一个应该是什么的大纲

Sub InsertCol(wb As Workbook)
With wb.Worksheets("colours")
.Columns("E:E").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
.Range("E2").FormulaR1C1 = "RED"
' etc
Wb.Save
End With
End Sub

相关内容