我有几百个excel工作簿都具有完全相同的格式和结构。我需要准备好以后处理的每个文件:
理想情况下,我可以打开运行此操作所需的所有工作簿,并在每个工作簿上运行宏,将每个文件的原始名称保存为制表符分隔文件,并在1-3中进行所有更改。
我在这段代码上一直遇到语法错误:
Sub Macro4_eggplant()
Dim newname as string
newname = ThisWorkbook.FullName
Rows("1:1").Select
Selection.Delete Shift:=xlUp
Columns("C:E").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("C2").Select
ActiveCell.FormulaR1C1 = "Filename.xls"
Range("C2").Select
Selection.AutoFill Destination:=Range("Table4[Column1]")
Range("Table4[Column1]").Select
Range("D5").Select
ActiveWorkbook.SaveAs Filename:= _
"/Users/matthewhughes/Desktop/" "newname" ".txt" _
, FileFormat:=xlText, CreateBackup:=False
End Sub
答案 0 :(得分:0)
ThisWorkbook.FullName
将返回包含宏的工作簿的完全限定文件名。您的以下代码(在修复语法错误之后,即Desktop/" "newname" ".txt"
应该是Desktop/" & newname & ".txt"
)只期望基本文件名(即没有路径和扩展名),并且可能应该指的是ActiveWorkbook而不是宏工作簿。
Sub Macro4_eggplant()
Dim newname as String
With ActiveSheet
newname = Left(.Parent.Name, InstrRev(.Parent.Name, ".") - 1)
.Rows(1).Delete Shift:=xlUp
.Columns("C:E").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
.Range("C2").FormulaR1C1 = "Filename.xls" ' or = .Parent.Name ?
.Range("C2").AutoFill Destination:=.Range("Table4[Column1]")
.Parent.SaveAs Filename:= "/Users/matthewhughes/Desktop/" & newname & ".txt", _
FileFormat:=xlText, _
CreateBackup:=False
End With
End Sub
(我假设Table4存在于某个地方。)