Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1368to1372
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

LinkName ff@Nepumuk

LinkName ff@Nepumuk
19.07.2014 22:36:08
Ralf
Hallo Nepumuk,
ok, den Namen einfügen verstehe ich.
Was muss im AddIn passieren, damit merkt, nicht mehr gebraucht zu werden?
Ständig die Existenz des Namens abfragen scheint mir aufwändig.
Klassenprogrammierung hab ich kein Schimmer ^^
Gruß
Ralf
Hallo,
einen unsichtbaren Namen anlegen:
Public Sub InsertLinkName()
Const LINK_NAME = "AddinProject" ' frei wählbar
Call ThisWorkbook.Names.Add(Name:=LINK_NAME, _
RefersTo:=Array(vbNullString), Visible:=False)
End Sub
Wie sieht es bei dir mit Klassenprogrammierung aus, schon mal gemacht?
Gruß
Nepumuk
P.S.: Fang einen neuen Thread an, der wird langsam zu unübersichtlich.

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
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

Anzeige
Vielen Dank! [owT]
21.07.2014 12:30:34
Ralf

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige