即使最后3个字母被重命名,运行macros

美好的一天,

请问是否可以运行macros,即使我正在使用的工作簿的标题上的一些字母或字符被重命名?

这是我正在使用的代码:

Sub WBS() Dim sourceColumn As Range, targetColumn As Range Set sourceColumn = Workbooks("Total cost.xlsm").Worksheets(3).Range("A3:A300") Set targetColumn = Workbooks("backing sheet (Jan).xlsm").Worksheets(2).Range("D6:D300") sourceColumn.Copy targetColumn.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False Application.CutCopyMode = False Call Resource_Name End Sub 

我真正想要做的就是运行macros,即使工作簿的名称改变了。 因为你可以看到我正在复制的值被粘贴在“支持表(Jan).xlsm”我想将名称更改为“支持表(Feb).xlsm” ,我知道它不会运行,因为目标工作簿不存在技术上。

有没有什么办法可以解决这个问题?

用date缩写在程序中创build一个命名范围 – 称为monthAbbr 。 每个月编辑一次。 然后,将VBA代码更改为

 Sub WBS() Dim monthAbbr As String monthAbbr = Range("monthAbbr").Value Dim sourceColumn As Range, targetColumn As Range Set sourceColumn = Workbooks("Total cost.xlsm").Worksheets(3).Range("A3:A300") Set targetColumn = Workbooks("backing sheet " & monthAbbr & ".xlsm").Worksheets(2).Range("D6:D300") sourceColumn.Copy targetColumn.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False Application.CutCopyMode = False Call Resource_Name End Sub 

我做的 :)。 为什么我使这个代码复杂? 请其他人想知道答案,请参阅下面的代码。

 Sub WBS() Dim monthAbbr As String monthAbbr = Range("monthAbbr").Value Dim sourceColumn As Range, targetColumn As Range Set sourceColumn = Workbooks("Total cost.xlsm").Worksheets(3).Range("A3:A300") Set targetColumn = ThisWorkbook.Worksheets(2).Range("D6:D300") sourceColumn.Copy targetColumn.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False Application.CutCopyMode = False Call Resource_Name 

我忘记了有一个ThisWorkbook代码。 我甚至可以改变我的文件的全名:)