Macro execution changes filename reference for all macros
Hi Fred,
I don't know what might have caused the change. However, the problem is to
get it working now. I have assumed that these buttons are Forms buttons; not
ActiveX Command Buttons. Therefore, save the OnAction for each of the buttons
prior to moving the worksheet and then reset the OnAction in the new
worksheet. The following code should do it.
I have tested this in xl2007 and it appears to work satisfactorily. However,
I will monitor the thread and feel free to get back to me if any problems.
Sub PreserveOnAction()
Dim shp As Shape
Dim arrAction()
Dim i As Long
Dim j As Long
With ActiveSheet
'Redim a 2 dimensional 1 based array
'with sufficient elements for all shapes
ReDim arrAction(1 To _
.Shapes.Count, 1 To 2)
For Each shp In .Shapes
If shp.OnAction < "" Then
i = i + 1
arrAction(i, 1) = shp.Name
arrAction(i, 2) = shp.OnAction
End If
Next shp
.Name = "Publication"
.Move
End With
'Publication will now be the active sheet
With Sheets("Publication")
'Some shapes might not have an OnAction
'and some elements at the end of the array
'might be blank.
'Therefore use i as the upper limit when
'retrieving the data from the array.
For j = 1 To i
.Shapes(arrAction(j, 1)) _
.OnAction = arrAction(j, 2)
Next j
End With
End Sub
--
Regards,
OssieMac
|