gpt4 book ai didi

vba - 将带有 VBA 代码和按钮的工作表移动到新工作簿

转载 作者:行者123 更新时间:2023-12-01 12:52:53 28 4
gpt4 key购买 nike

我有一个包含宏和按钮的工作表。我想将该工作表复制到其他工作簿,以便宏可以与新工作簿中的数据一起使用。

我的问题是,当我将工作表复制到新工作簿中时,宏随它一起出现,但工作表上的按钮仍然指向原始工作簿中的宏。您必须右键单击“分配宏”并选择当前工作簿中的宏。

是否有属性设置告诉 Excel 中的按钮使用新工作簿而不是旧工作簿中的宏?

最佳答案

这是我从 TheSpreadsheetGuru 中提取的解决方案。我对其进行了修改以接受一个工作表对象,这样您就可以针对您拥有句柄的任何工作表运行它。

Public Sub FixCopiedButtonMacroLinks(ByVal theSheet As Worksheet)
' UPDATED: by HackSlash to accept a worksheet parameter.
'PURPOSE: Remove an external workbook reference from all shapes triggering macros
'Source: www.TheSpreadsheetGuru.com

Dim control As Shape
Dim MacroLink As String
Dim SplitLink As Variant
Dim NewLink As String

'Loop through each shape in worksheet
For Each control In theSheet.Shapes

'Grab current macro link (if available)
MacroLink = control.OnAction

'Determine if shape was linking to a macro
If MacroLink <> vbNullString And InStr(MacroLink, "!") <> 0 Then
'Split Macro Link at the exclaimation mark (store in Array)
SplitLink = Split(MacroLink, "!")

'Pull text occurring after exclaimation mark
NewLink = SplitLink(1)

'Remove any straggling apostrophes from workbook name
If Right(NewLink, 1) = "'" Then
NewLink = Left(NewLink, Len(NewLink) - 1)
End If

'Apply New Link
control.OnAction = NewLink
End If
Next control
End Sub

关于vba - 将带有 VBA 代码和按钮的工作表移动到新工作簿,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31033749/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com