vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Erstellen von dynamischen Kontextmen?s - wann immer Sie sie brauchen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Fortgeschrittene Programmierung
Re: Worksheet in Excel-Addins 
Autor: vbNetProgrammierer
Datum: 18.01.11 16:59

Ich kenne nur eine Lösung für das öffnen und schliessen von Dokumenten(Ich hatte auch mal diese Probleme). Für SelectionChange fand ich nie eine Lösung.
Für Dokument Events fand ich die unten angegebene Lösung(Vieleicht ein Anhaltspunkt?). Es ist möglich das sich die Sachlage inzwischen geändert hat, ich habe nämlich nur Office 97(benutze meist OpenOffice.org).

Füge folgendes in "DieseArbeitsmappe" in VBA ein:
Private Sub Workbook_Open()
    MsgBox ("Programm gestartet")
    PrüfeAufWorkbooks
End Sub
Public Sub PrüfeAufWorkbooks()
    'Variablen initialisieren
    Dim Durchzähler As Integer
    Dim DurchzählerInner As Integer
    Dim Enthalten As Boolean
    Dim AktivBook As String
    Dim M() As String 'VergleichsArray 1
    Dim M2 As Workbooks
    Dim Z() As String 'VergleichsArray 2
    'Dim Z2 As Workbooks
 
Restart:
    Set M2 = Application.Workbooks
    If M2.Count > 0 Then
        'VergleichsArray 2 initialisieren
        ReDim Z(1 To M2.Count) As String
        For Durchzähler = 1 To M2.Count
            Z(Durchzähler) = GenerateKey(M2.Item(Durchzähler))
        Next Durchzähler
    Else
        GoTo WarteAufGeöffneteWorkbooks
    End If
Start:
    Set M2 = Application.Workbooks
    If M2.Count > 0 Then
        'VergleichsArray 1 aufbauen
        ReDim M(1 To M2.Count) As String
            For Durchzähler = 1 To M2.Count
            M(Durchzähler) = GenerateKey(M2.Item(Durchzähler))
        Next Durchzähler
        DoEvents
 
        'Array auf nach neue Workbooks durchsuchen
        For Durchzähler = 1 To UBound(M)
            Enthalten = True
            AktivBook = M(Durchzähler)
            Enthalten = False
            For DurchzählerInner = 1 To UBound(Z)
                If AktivBook = Z(DurchzählerInner) Then Enthalten = True
            Next DurchzählerInner
            If Not Enthalten Then WorkbookOpen AktivBook, M2.Item(Durchzähler), _
              Durchzähler
        Next Durchzähler
 
        'Array auf geschlossene Workbooks durchsuchen
        For Durchzähler = 1 To UBound(Z)
            Enthalten = True
            AktivBook = Z(Durchzähler)
            Enthalten = False
            For DurchzählerInner = 1 To UBound(M)
                If AktivBook = M(DurchzählerInner) Then Enthalten = True
            Next DurchzählerInner
            If Not Enthalten Then WorkbookClosed AktivBook, Durchzähler
        Next Durchzähler
 
        DoEvents
        'Dem VergleichsArray 2 das VergleichsArray 1 zuweisen
        ReDim Z(1 To UBound(M)) As String
        For Durchzähler = 1 To UBound(M)
            Z(Durchzähler) = M(Durchzähler)
        Next Durchzähler
 
        'Warten und wieder von Vorne Starten
        GoSub Warte
        GoTo Start
        Exit Sub
    Else
        'Alle noch im Array befindlichen Workbooks als geschlossen definieren
        For Durchzähler = 1 To UBound(Z)
            WorkbookClosed Z(Durchzähler), Durchzähler
        Next Durchzähler
WarteAufGeöffneteWorkbooks:
        'Warten bis wieder Workbooks geöffnet werden        
        Do While Application.Workbooks.Count <= 0
            GoSub Warte
        Loop
        GoTo Restart
        Exit Sub
    End If
 
    'Warten und wieder zum Anfang
Warte:
    DoEvents
    Return
End Sub
Public Function GenerateKey(W As Workbook) As String
    GenerateKey = W.Name & "?" & W.Path
End Function
Public Function ExtractName(N As String) As String
    ExtractName = Left(N, InStr(1, N, "?", vbBinaryCompare) - 1)
End Function
 
 
Private Sub WorkbookOpen(N As String, W As Workbook, Num As Integer)
    'Hier Programm einfügen
    MsgBox ("Geöffnet wurde " & ExtractName(N))
End Sub
Private Sub WorkbookClosed(N As String, Num As Integer)
    'Hier Programm einfügen
    MsgBox ("Geschlossen wurde " & ExtractName(N))
End Sub
Ich weiß, dass Programm ist nicht sehr Strukturiert. Aber bei mir funktioniert es!



Keine Garantie auf richtige Rechtschreibung!

Beitrag wurde zuletzt am 18.01.11 um 17:07:05 editiert.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
selectionChange in Excel-Addins1.713Giasinga13.01.11 11:45
Re: selectionChange in Excel-Addins1.062Giasinga18.01.11 09:39
Re: Worksheet in Excel-Addins1.052vbNetProgrammie...18.01.11 16:59
Re: selectionChange in Excel-Addins1.066Giasinga03.02.11 11:14
Re: selectionChange in Excel-Addins1.007Giasinga03.02.11 11:26

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel