Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Problem mit Workbook Open() unter Excel VBA

Mitglied: miniversum

miniversum (Level 3) - Jetzt verbinden

24.03.2010 um 11:27 Uhr, 17487 Aufrufe, 4 Kommentare

Bräuchte eine Funktion Worksheet_AfterOpen()

Hallo

Ich habe ein Add-In (xla) in Excel 2003 geschrieben. Das ganze funktioniert auch gut.
Jetzt möchte ich, das beim Starten von Excel etwas ausgeführt wird. Das habe ich mit der Funktion Workbook_Open()
erreicht die ich in die xla Datei eingebaut habe.

Nun zu meinem Problem. Starte ich Excel indem ich eine Datei doppelt anklicke wird, durch die etwas aufwendigere Prozedur die mit Workbook_Open() ausgelöst wird, aus irgend einem mir nicht bekannten Grund die Datei nicht immer geöffnet sondern Excel startet ohne eine Datei geöffnet zu haben. Lasse ich den Funktionsaufruf in Workbook_Open() weg funktioniert es.

Nun habe ich mehrere Lösungsansätz bei denen ich allerdings bei allen nicht weiter komme und Hilfe brauchen könnte.
1. Ich schaue warum die Datei nicht geöffnet wird. Da hab ich schon einen Ansatz:
Ich öffne an diesem Punkt ein Form. Zeige ich diese Form nicht an Funktioniert das ganze und die Datei wird geöffnet.
Ich brauche aber die Form um etwas anzuzeigen und kann sie deshalb nicht geschlossen lassen.
2. Ich merke mir selbst die Datei und öffne sie selbst wenn sie nochnicht geöffnet ist.
Hier habe ich das Problem des herausfinden des Dateinamens. Ich habe da 2 Dinge versucht
2a. Über die Variable Activeworkbook.Name
Das geht nicht weil zu dem Zeitpunkt andem Workbook_Open() aufgerufen wird noch keine Datei geöffnet ist. Das pasiert erst danach.
2b. Die Übergabeparameter an Excel.exe kontrollieren
Hier ist es allerdings so das der Dateiname beim anklicken einer xls Datei nicht mit übergeben wird (wo steht er dann?).
Das ist zumindest in der Standard Verknüpfung so und will ich auch nicht ändern wenne s ncith sein muss.
Somit kann ich hier auch nichts herausholen.
3. Ich müsste warten bis die Datei geöffnet ist und danach erst mein Makro ausführen.
Hier habe ich keine Idee wie es gehen könnte.
Wartezeiten ansich klappen nicht.
Versuche mit Workbook_Activate() oder anderem haben auch nichts gebracht.

Nun bin ich etwas ratlos wie ich das für Excel 2003 unter Windows xp noch lösen könnte. Win für Ideen in jeder Richtung dankbar.

Dominik
Mitglied: 76109
24.03.2010 um 13:49 Uhr
Hallo Dominik!

Irgendwie habe ich auch schonmal daran herumexperimentiert und wenn ich mich nicht irre, dann geht das nur über ein Klassenmodul, in dem Du Erreignisse abfangen kannst.

Sieh Dir mal die Katalog-Hilfe zu Application Workbook_WindowActivate an :
Event WindowActivate(Wb As Workbook, Wn As Window)

Gruß Dieter
Bitte warten ..
Mitglied: miniversum
24.03.2010 um 16:33 Uhr
Danke für die Idee.
Dadurch bin ich jetzt auf eine Lösung gekommen.
Ich starte über Workbook_open() eine Sub Workbook_Open_Check() die zyklisch alle paar Sekunden abprüft ob die Anzahl der Workbooks > 0 ist. Wenn das der Fall ist wird das eigentliche Makro gestartet. Hier der Code:
01.
Private Startup_timer_interval As Double
02.
Private Const OnSec As Double = 1.15740740740741E-05
03.
Private Const interval As Integer = 1
04.

05.
Public Sub Workbook_Open_Check()
06.
    
07.
    Startup_timer_interval = interval * OnSec
08.
    
09.
    Application.OnTime (Now + Startup_timer_interval), "Timer_OnTimer"
10.
End Sub
11.

12.
Private Sub Timer_OnTimer()
13.
    If Application.Workbooks.Count > 0 Then
14.
        Call Workbook_Opened
15.
    Else
16.
        Application.OnTime (Now + Startup_timer_interval), "Timer_OnTimer"
17.
    End If
18.
End Sub
19.

20.
Private Sub Workbook_Opened()
21.
    ' Hier das was denn ausgeführt werden soll NACHDEM die Datei geöffnet ist
22.
    Msgbox "Datei geöffnet"
23.
End Sub
Bitte warten ..
Mitglied: 76109
24.03.2010 um 17:29 Uhr
Hallo miniversum!

Guter Trick

Wobei man den Interval auch so machen könnte:
01.
x = Now + TimeSerial(0, 0, 1)
02.
x = Now + TimeValue("00:00:01")
Gruß Dieter
Bitte warten ..
Mitglied: miniversum
24.03.2010 um 17:52 Uhr
Ach das mit TimeValue hätte ich auch erst machen wollen ich wusste nur nicht wie das geht. Deshalb die Konstruktion mit 1.15740740740741E-05
Danke dafür.
Bitte warten ..
Ähnliche Inhalte
Microsoft Office

Workbook open funktioniert nicht, wenn Workbook per Schaltfläche neu gestartet wird

gelöst Frage von mreskeMicrosoft Office14 Kommentare

Hallo folgende Vorgehensweise funktioniert nicht: a.) Geöffnetes Dokument (Test.xlsm) soll per Schaltfläche ("Close and Open") neu geöffnet werden. a.) ...

Microsoft Office

Excel VBA vbyesno

gelöst Frage von Florian86Microsoft Office2 Kommentare

Hallo, ich habe folgenden Code Sub AbgerundetesRechteck1_Klicken() Dim wksOrig As Worksheet Dim wksStore As Worksheet Dim lngLastRow As Long ...

VB for Applications

Excel VBA Code

gelöst Frage von specialuserVB for Applications2 Kommentare

Hallo zusammen, Hab hier einen Button in einer Excel mit Makros erstellt. Der Button hat die Funktion aus der ...

Microsoft Office

Excel VBA - PDF

Frage von SabineTMicrosoft Office3 Kommentare

Hallo Zusammen, ich habe ein pdf, über welches ich bereits die OCR Texterkennung laufen lassen habe. Jetzt möchte ich ...

Neue Wissensbeiträge
Vmware

Which four application services are delivered by VMware Horizon 7

Erfahrungsbericht von erichamm vor 2 StundenVmware2 Kommentare

Which four application services are delivered by VMware Horizon 7? A. Packaged apps with VMware ThinApp B. Virtualized apps ...

Windows 7
Updategängelung auf Windows 10, die zweite
Information von Penny.Cilin vor 3 TagenWindows 71 Kommentar

Hallo, da Windows 7 im kommenden Jahr nicht mehr supportet wird, werden Nutzer von Window 7 home premium wieder ...

Internet
EU-Urheberrechtsreform: Zusammenfassung
Information von Frank vor 5 TagenInternet1 Kommentar

Auf golem.de gibt es eine Analyse von Friedhelm Greis, der das Thema EU-Urheberrechtsreform gut und strukturiert zusammenfasst. Zwar haben ...

Microsoft Office

Office365 Schwachstellen bei Sicherheit und Datenschutz

Information von Penny.Cilin vor 6 TagenMicrosoft Office9 Kommentare

Auf Heise+ gibt es einen Artikel bzgl. Office365 Schwachstellen. Das ist noch ein Grund mehr seine Daten nicht in ...

Heiß diskutierte Inhalte
Utilities
Teamviewer 9.x "out of date" ??
gelöst Frage von keine-ahnungUtilities15 Kommentare

Moin at all, mein topaktueller teamviewer (alles 9.x - releases) verweigert seit heute die Arbeit und bemeckert: "the remote ...

Peripheriegeräte
PS2 Y-Kabel für Maus+Tastatur an PS2 Combo-Anschluss ASUS Prime X370-A
gelöst Frage von Windows10GegnerPeripheriegeräte12 Kommentare

Hallo, ich bin am Überlegen das o.g. Motherboard anzuschaffen. Da ich aber noch PS/2 für Maus+Tastatur benötige (bei optischen ...

Windows 10
Netzlaufwerk verschwindet (aber nur bestimmter Laufwerksbuchstabe)
gelöst Frage von survial555Windows 1010 Kommentare

Hallo, ich habe ein ganz seltsames Problem. Systemumgebung: Server 2012 R2 als DC und Windows 10 Pro als Clients ...

Windows Server
RDP Meldung vor erzwungener Abmeldung
Frage von DOCTRLWindows Server9 Kommentare

Hallo, Situation: Remotedesktop Farm mit mehreren Servern und einer Domäne. Nutzer werden Montags und Donnerstags automatisch abgemeldet. 15 Minuten ...