Anzeige
Archiv - Navigation
788to792
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
788to792
788to792
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Add-Ins (Nachtrag)

Add-Ins (Nachtrag)
14.08.2006 16:26:08
Dudzik
Hallo,
im Nachtrag zu meiner gerade gestellten Anfrage habe ich die xls-Datei unter der folgender URL gespeichert: https://www.herber.de/bbs/user/35786.xls
Die dort aufgeführte neue Klasse funktioniert in einer xla-Datei nicht.
Wer kann helfen?
Tschüß
Matthias

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Add-Ins (Nachtrag)
14.08.2006 17:38:08
Luschi
Hallo Matthias,
wie sollte das auch passieren? Die Ereignisse "Workbook_SheetChange" und "Worksheet_Change" werden nur ausgelöst, wenn der User in einer Tabelle Daten per Tastatur/Maus eingibt/auswählt. Formeländerungen und Zellwertänderungen per Vba lösen diese Ereignisse nicht aus. Da die Tabellen in 1 Add-In aber vor dem User versteckt sind, sind diese Ereignisse auch nicht für den Programmierer nutzbar.
Warum willst Du eigentlich Menü-Deklarationen, die nur für 1 bestimmtes Workbook gültig sind, in einem Add-In definieren, das ja allgemein gültig sein soll (also für möglichst viele Arbeitsmappen). Plaziere soetwas in der jeweiligen Arbeitsmappe. Außerdem müßte man ja auch das Menü wieder entfernen, wenn die Arbeitsmappe geschlossen wird, Excel aber weiter aktiv ist (und damit auch das Add-In)
In Add-In's kann man selbstverständlich auch Klassenmodule verwenden. Doch diese müssen aus 1 öffentlichem Modul angeschubst werden. Und die Fehlersuche in einem solchen Klassenmodul vom Add-In ist sehr zeitaufwendig; da der Debugger beim Aufruf der Klassenmodul-Funktion stehen bleibt und nicht die Fehlerstelle in der Funktion anzeigt.
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Add-Ins (Nachtrag)
15.08.2006 09:02:24
Dudzik
Hallo Luschi aus klein-Paris,
meine Aufgabe besteht darin, eine bestimmte xls-Datei durch einen nicht vordefinierten Anwenderkreis aktualisieren und auswerten zu lassen. Leider darf diese Datei keinen Makro-Code aufweisen, da die Sicherheitsstufe auf "hoch" beibehalten werden soll. Meine Idee ist es, ein Add-In zu erstellen, welches ständig beim Öffnen von Excel mit aktiviert wird und selbständig, wenn die bestimmte Datei geöffnet wird, ein entsprechendes Menü erzeugt und beim Deaktivieren bzw. beim Schließen dieser Datei wieder löscht. Die entsprechenden Prozeduren und Funktionen beziehen sich dann selbstverständlich auf die bestimmte Arbeitsmappe. Da das Add-In problemlos erkannt wird (auch bei einer hohen Sicherheitsstufe), kann ich dieses Add-In auf verschiedenen Rechnern verteilen, ohne gegen die Sicherheitsregeln zu verstoßen. Für den Anwender soll das Ganze so einfach wie möglich getstaltet werden, deshalb wird der Aufbau einer eigenen Menüleiste für diese Arbeitsmappe erfolgen.
Vielleicht hast Du eine bessere Idee, wie ich das bewerkstelligen kann.
Tschüß,
Matthias
Anzeige
AW: Add-Ins (Nachtrag)
15.08.2006 09:37:06
Josef
Hallo Matthias,
das geht so.
' **********************************************************************
' Modul: DieseArbeitsmappe Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub Workbook_BeforeClose(Cancel As Boolean)
deleteMenu
End Sub


Private Sub Workbook_Open()
initApp
End Sub


' **********************************************************************
' Modul: mdlMain Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Public Const myMenue As String = "Mein Menü" ' Name des Menüs
Public Const myWorkbook As String = "DieMappe.xls" ' Name der Mappe in der das Menü vorhanden sein soll

Public myXLApp As New clsApplication

Sub initApp()
Set myXLApp.xlApplication = Application
End Sub


Sub makeMenue()
Dim objCB As CommandBar
Dim objCBBtn As CommandBarButton

deleteMenu

Set objCB = Application.CommandBars.Add(Name:=myMenue, Position:=msoBarFloating, MenuBar:=False, Temporary:=True)

Set objCBBtn = objCB.Controls.Add(msoControlButton)

With objCBBtn
  .Style = msoButtonCaption
  .Caption = "Hallo"
  .OnAction = "test"
End With

objCB.Visible = True

Set objCB = Nothing
Set objCBBtn = Nothing
End Sub


Sub deleteMenu()
On Error Resume Next
Application.CommandBars(myMenue).Delete
On Error GoTo 0
End Sub


Sub test()
MsgBox "Hallo!"
End Sub


' **********************************************************************
' Modul: clsApplication Typ: Klassenmodul
' **********************************************************************

Option Explicit

Public WithEvents xlApplication As Excel.Application

Private Sub Class_Terminate()
Set myXLApp.xlApplication = Nothing
End Sub


Private Sub xlApplication_WorkbookActivate(ByVal Wb As Workbook)
If Wb.Name = myWorkbook Then makeMenue
End Sub


Private Sub xlApplication_WorkbookBeforeClose(ByVal Wb As Workbook, Cancel As Boolean)
If Wb.Name = myWorkbook Then deleteMenu
End Sub


Private Sub xlApplication_WorkbookDeactivate(ByVal Wb As Workbook)
If Wb.Name = myWorkbook Then deleteMenu
End Sub


Private Sub xlApplication_WorkbookOpen(ByVal Wb As Workbook)
If Wb.Name = myWorkbook Then makeMenue
End Sub


Achte darauf, daß das Klassenmodul "clsApplication" heist!
Das Menü ist nur als Beispiel gedacht.
Gruß Sepp

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige