即使最后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代码。 我甚至可以改变我的文件的全名:)