【发布时间】:2017-05-11 22:08:03
【问题描述】:
我编写了将两个电子表格复制到新工作簿的代码,其中嵌入了工作表中的宏,但是,调用宏的按钮仍在调用原始工作簿,而不是新工作簿中的重复宏。这个新工作簿将被发送给无法访问原始工作簿的其他人,所以我的问题是,有没有办法自动更新按钮以调用新工作簿中的宏,我将如何去做?
导出代码如下:
Sub ExportPropWB()
Dim a As String, b As String, c As String, Mainbook As Workbook, info As Range, FileExtStr As String, FileFormatNum As Long, foldername As String, datestring As String, Newbook As Workbook, info1 As Range, info2 As Range, paste1 As Range, paste2 As Range
Set Mainbook = Application.ThisWorkbook
a = Mainbook.Worksheets("Application").Range("Client")
b = Mainbook.Worksheets("Application").Range("ProjectName")
datestring = Format(Now, "yyyy-mm-dd")
c = datestring & " - " & a & " Proposal " & b
foldername = Mainbook.Path & "\proposal\"
Application.ScreenUpdating = False
Mainbook.Worksheets("Equipment").Copy
Set Newbook = Application.ActiveWorkbook
Set info1 = Mainbook.Worksheets("equipment").Range("A1:AU343")
Set paste1 = Newbook.Worksheets("equipment").Range("A1:AU343")
paste1.Value = info1.Value
Mainbook.Worksheets("Proposal").Copy after:=Newbook.Worksheets("Equipment")
Set info2 = Mainbook.Worksheets("Proposal").Range("A1:AG1480")
Set paste2 = Newbook.Worksheets("Proposal").Range("A1:AG1480")
paste2.Value = info2.Value
FileExtStr = ".xlsm"
xFile = foldername & c & " " & FileExtStr
Newbook.SaveAs Filename:=xFile, FileFormat:=52
Application.ScreenUpdating = True
End Sub
按钮调用的代码如下:
Sub HidePage02()
With ThisWorkbook.Worksheets("Proposal").Shapes("Hide2").TextFrame2.TextRange.Characters
If .Text = "Hide Page 2" Then
.Text = "Show Page 2"
Rows("75:148").Hidden = True
ThisWorkbook.Worksheets("Proposal").Shapes("BHIP2").Visible = False
Thisworkbook.worksheets("Proposal").Range("Page2") = "Yes"
Else
.Text = "Hide Page 2"
With ThisWorkbook.Worksheets("Proposal").Shapes("Hide2")
Rows("75:148").Hidden = False
Thisworkbook.worksheets("Proposal").Range("Page2") = "no"
ThisWorkbook.Worksheets("Proposal").Shapes("BHIP2").Visible = True
End With
End If
End With
End Sub
感谢您的时间和帮助。
【问题讨论】:
-
ThisWorkbook指的是包含宏的工作簿,因此您需要更改引用或为您的子添加参数。 -
SJR:代码应该只引用包含它的工作簿,问题是当复制工作表时,按钮仍在尝试访问原始工作簿中的宏,即使那些宏被复制到新书中。
-
好的,我现在明白了。运行代码时两个工作簿都打开了吗?如果没有,你能关闭原件并检查发生了什么吗?
-
当我关闭原书并点击新书上的按钮时,它会重新打开原书并激活那里的按钮
-
我认为您的按钮没有将分配更改为原始宏会发生什么 - 尝试在新工作簿中重新分配宏(使用 OnAction)。如果您对此感到困惑,请大声喊叫。