AW: VBA Kompatibilität V11-V9
16.02.2010 23:43:29
Andreas
Ja liebe Leute, alles in v9 entwickelt, einmal in v11 gespeichert (und das war nur ein Kommentar, den ich geändert habe), schon geht es nichtmehr.
Code-Beispiel.. gern, wenn ich wüsste welches, aber alles wäre ein bisschen viel.
im workbook_open steht jedenfalls:
Application.AddIns("myaddin").Installed = True
und im AddIn Workbook_AddInInstall folgendes:
Private Sub Workbook_AddinInstall()
Dim ctlNewMenu As CommandBarControl
Dim ctlNewGroup As CommandBarControl
Dim ctlNewItem As CommandBarControl
Dim oToolBar As CommandBar
Dim oToolBtn As CommandBarButton
On Error Resume Next
Application.CommandBars("Worksheet Menu Bar").Controls("NewMenu"").Delete
Application.CommandBars("Toolbar").Delete
On Error GoTo 0
'Add Menu item
Set ctlNewMenu = Application.CommandBars("Worksheet Menu Bar").Controls.Add(msoControlPopup, , , _
9)
ctlNewMenu.Caption = "&NewMenu"
Set ctlNewItem = ctlNewMenu.Controls.Add(Type:=msoControlButton)
With ctlNewItem
.Caption = "&Help"
.OnAction = "showHelp"
.FaceId = 926
.BeginGroup = True
End With
' Create Toolbar
Set oToolBar = Application.CommandBars.Add("Toolbar", msoBarFloating, False, True)
Set oToolBtn = oToolBar.Controls.Add
With oToolBtn
.Caption = "Last10"
.TooltipText = "Calculates last 10 data entries"
.OnAction = "LastTen"
End With
oToolBar.Visible = True
End Sub
Soweit für mich nichts auffälliges... zudem aber folgendes (wobei ich irgendwie den Verdacht hab, dass da der Wurm drinsteckt:)
Im workbook_open des addins:
Set cEvents.xlapp = Application
wobei in einem Modul steht:
Public cEvents As New clsEvents
Das Klassenmodul clsEvents ist:
Public WithEvents xlapp As Excel.Application
Private Sub xlapp_WorkbookBeforeClose(ByVal Wb As Workbook, Cancel As Boolean)
Dim iAnz As Byte
Dim i As Byte
Set Wb = ActiveWorkbook
On Error Resume Next
'For Add-In, do not do all that following stuff, just let it be closed by event
If Right(Wb.name, 3) = "xla" Then Exit Sub
' protect wkb
If isSPCwkb(Wb) Then
ProtectRFSPC Wb
Wb.Save
End If
' do it long-winded: the events occurs when workbook is going to be closed. we close the _
workbook
' manually and cancel the event
Application.enableEvents = False
If isSPCwkb(Wb) Then
Wb.Close False
Else
Wb.Close
End If
Application.enableEvents = True
Cancel = True
' count workbooks
iAnz = 0
For i = 1 To Workbooks.Count
If isSPCwkb(Workbooks(i)) Then
iAnz = iAnz + 1
End If
Next i
' uninstall Add-In
If iAnz = 0 Then Application.AddIns("myaddin").Installed = False
End Sub
Achja, in v11 speichern, in v9 kompilieren und speichern geht auch nicht, die liebe Fehlermeldung lautet "Workbook Not Saved!".
Viele Grüße und schönen Karneval, hier 7000km westlich gibt es das nicht ;)
Andreas