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

Frage Entwicklung VB for Applications

Mitglied: miniversum

miniversum (Level 3) - Jetzt verbinden

24.03.2010 um 11:27 Uhr, 15923 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
VB for Applications
VBA: workbook schließt sich nicht, wenn Sheet ein Diagramm ist
gelöst Frage von Gimli3311VB for Applications2 Kommentare

Guten Abend Zusammen, habe ein zweites Problem in meinem Code. Dachte ich kann des selber lösen aber es klappt ...

Microsoft Office
VBA und Excel
gelöst Frage von cosmonautMicrosoft Office6 Kommentare

Ich habe eine "Aufgabe" zum Thema VBA programmieren. Dazu habe ich eine Exceltabelle, - dessen Inhalt ich nach bestimmten ...

VB for Applications
VBA-Excel Tabellen verschieben bzw splitten problem
gelöst Frage von SpikeeeVB for Applications8 Kommentare

Hallo Liebe Gemeinde! Ich bin relativer Neuling in VBA Programmierung, versuche mich mit meinem Kollegen aber gerade an einer ...

Microsoft Office
VBA Excel Problem mit UserForm, ListBox und TextBox
gelöst Frage von abuelitoMicrosoft Office12 Kommentare

Hallo ll, folgendes habe ich erstellt: 1. Ich habe eine Tabelle1 erstellt mit 60 Spalten 2. Zu dieser Tabelle1 ...

Neue Wissensbeiträge
MikroTik RouterOS

Mikrotik - Lets Encrypt Zertifikate mit MetaROUTER Instanz auf dem Router erzeugen

Anleitung von colinardo vor 11 StundenMikroTik RouterOS4 Kommentare

Einleitung Folgende Anleitung ist aus der Lage heraus entstanden das ein Kunde auf seinem Mikrotik sein Hotspot Captive Portal ...

Sicherheit

Sicherheitslücke in HP-Druckern - Firmware-Updates stehen bereit

Information von BassFishFox vor 11 StundenSicherheit

Ein weiterer Grund, dass Drucker keinerlei Verbindung nach "auswaerts" haben sollen. Unter Verwendung spezieller Malware können Angreifer aus der ...

Administrator.de Feedback

Entwicklertagebuch: Die Startseite wurde überarbeitet

Information von admtech vor 14 StundenAdministrator.de Feedback9 Kommentare

Hallo Administrator User, mit dem Release 5.7 haben wir unsere Startseite überarbeitet und die Beiträge und Fragen voneinander getrennt. ...

Vmware

VMware Desktopprodukte sind verwundbar

Information von Penny.Cilin vor 18 StundenVmware

Die VMware-Anwendungen zum Umgang mit virtuellen Maschinen Fusion, Horizon Client und Workstation sowie die Plattform NSX sind verwundbar. Davon ...

Heiß diskutierte Inhalte
Visual Studio
Vb.net-Tool zum Erzeugen einer Outlook-E-Mail
Frage von ahstaxVisual Studio24 Kommentare

Hallo, ich möchte gerne ein vb.net-Tool schreiben, das am Ende eine Outlook-E-Mail erzeugt. Grundsätzlich ist mir klar, wie das ...

Windows Server
RDP macht Server schneller???
Frage von JaniDJWindows Server16 Kommentare

Hallo Community, wir betrieben seit geraumer Zeit diverse virtuelle Maschinen und Server mit Windows Server 2012. Leider haben wir ...

Windows Netzwerk
Netzwerk Neustrukturierung
Frage von IT-DreamerWindows Netzwerk16 Kommentare

Hallo verehrte Community und Admins, bei uns im Haus steht eine Neustrukturierung an. Dafür benötige ich von euch ein ...

Windows 10
Windows 10 dunkler Bildschirm nach Umfallen
Frage von AkcentWindows 1015 Kommentare

Hallo, habe hier einen Windows 10 Rechner der von einem User umgefallen wurde (Beine übers Knie, an den PC ...