2015-04-15 174 views
0

我确定这个问题被问到,但我找不到适用于我的情况的解决方案。我有一个包含宏指令的文本文件,用于在输入的每条记录中输入时间日期。我已经通过VB“视图代码”视图将代码粘贴到Excel文件中,并将其保存为我想要的文件名。在多个Excel文件上运行宏

问题是,我需要永久性地对数百个文件进行修改。有什么办法可以自动化吗?

我试图记录一个宏,粘贴代码并保存文件,但它会保存我录制宏的原始文件的文件名。有没有什么办法可以编辑宏以当前文件名保存当前目录中的文件?

我录制宏, 我这个代码粘贴到一个表:

Private Sub Worksheet_Change(ByVal Target As Range) ' Code goes in the Worksheet specific module Dim rng As Range ' Set Target Range, i.e. Range("A1, B2, C3"), or Range("A1:B3") Set rng = Target.Parent.Range("A:A") ' Only look at single cell changes If Target.Count > 1 Then Exit Sub ' Only look at that range If Intersect(Target, rng) Is Nothing Then Exit Sub ' Action if Condition(s) are met (do your thing here...) With Target .Offset(, 1) = Date .Offset(, 2) = Time End With End Sub 后来我停止宏。这是结果:

Sub save() save Macro Sheets("Sheet1").Select ChDir "P:\Inventory\templates\NB (D) Kelso 011" ActiveWorkbook.SaveAs Filename:= _ "P:\Inventory\templates\NB (D) Kelso 011\D101.xlsm", FileFormat:= _ xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False End Sub

+0

如果您只需要可用于打开任何工作簿的宏,请将包含宏的工作簿保存为默认位置的Excel加载项(.xlam)。然后转到开发人员 - >加载项并选中该框以启用它。如果你想修改宏本身来打开多个文件,你可能想编辑你的问题来包含代码。 – Comintern

+0

我无法使用你的指导,在Excel 2013中显然不支持xlam。 –

回答

0

我目前工作-PC与老2003的Excel上,当我打开宏,我有宏和“使用宏从所有打开的文件”或列表“使用只从这个文件“切换。因此,只需使用代码的宏创建一个文件,然后打开其他文件并从另一个文件调用宏,Excel就可以处理这个问题! 对于新版本,我不能尝试,但我相信这个有用的东西不能被杀死......?