AW: LinkName ff@Nepumuk
20.07.2014 10:31:12
Nepumuk
Hallo,
im Addin benötigst du folgenden Code damit es sich selber schließt wenn keine Mappe mehr geöffnet ist die den versteckten Namen enthält:
' **********************************************************************
' Modul: DieseArbeitsmappe Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************
Option Explicit
Private mobjApplication As clsApplication
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Set mobjApplication = Nothing
End Sub
Private Sub Workbook_Open()
Set mobjApplication = New clsApplication
End Sub
' **********************************************************************
' Modul: basTimer Typ: Allgemeines Modul
' **********************************************************************
Option Explicit
Public Sub CloseTimer()
Const LINK_NAME = "AddinProject"
Dim objWorkbook As Workbook
Dim blnFound As Boolean
For Each objWorkbook In Workbooks
If SearchName(LINK_NAME, objWorkbook) Then
blnFound = True
Set objWorkbook = Nothing
Exit For
End If
Next
If Not blnFound Then Call ThisWorkbook.Close(SaveChanges:=False)
End Sub
Private Function SearchName( _
ByVal pvstrName As String, _
ByRef probjWorkbook As Workbook) As Boolean
Dim objName As Name
For Each objName In probjWorkbook.Names
If objName.Name = pvstrName Then
SearchName = True
Set objName = Nothing
Exit For
End If
Next
End Function
' **********************************************************************
' Modul: clsApplication Typ: Klassenmodul
' **********************************************************************
Option Explicit
Private WithEvents mobjApplication As Application
Private Sub Class_Initialize()
Set MyApplication = Application
End Sub
Private Sub Class_Terminate()
Set MyApplication = Nothing
End Sub
Private Property Get MyApplication() As Application
Set MyApplication = mobjApplication
End Property
Private Property Set MyApplication(ByRef probjApplication As Application)
Set mobjApplication = probjApplication
End Property
Private Sub mobjApplication_WorkbookBeforeClose(ByVal Wb As Workbook, Cancel As Boolean)
Call Application.OnTime(Now, "CloseTimer")
End Sub
Gruß
Nepumuk