Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

Von Excel auf geöffnete Notepad umschalten in VBA

Forumthread: Von Excel auf geöffnete Notepad umschalten in VBA

Von Excel auf geöffnete Notepad umschalten in VBA
21.11.2025 22:22:25
Gerry
Die Situation ist folgende.

Wie in einem anderen Beitrag geschrieben, will ich eine Musikdatenbank über Excel aktualisieren.
Da dies mit XML-Editor und mit Excel öffnen als XML nicht funktioniert, habe ich ein VBA Script erstellt.

Zuerst wird die XML-Datenbank mit Notepad (Editor) geöffnet.
Danach wird der komplette Inhalt in ein leeres Tabellenblatt von Excel eingefügt.
Nun werden die einzelnen Zeilen abgeglichen.

Danach wird das aktualisierte Tabellenblatt markiert und in die Zwischenablage kopiert
Bis hierher funktioniert alles.

Die einzige Möglichkeit, daß die veränderte XML-Datei von Virtual DJ erkannt und akzeptiert ist, daß die Datei mit Notepad gespeichert wird.
Bei speichern von Excel als xml wird die Datenbank von Virtual DJ nicht akzeptiert.

Das öffnen der XML-Datenbank mittels VBA in Excel funktioniert wie folgt
Dim ReturnValue, I
ReturnValue = Shell("C:\WINDOWS\Notepad.exe " & filePath, 1) ' Startet Notepad
' und öffnet "D:\VirtualDJ Local Database v6.xml".
AppActivate ReturnValue ' Activate the Notepad.
For I = 1 To 200 ' Set up counting loop.
Next I ' to add each value of I.

Laut Internet sollte das umschalten mit dem Befehl AppActivate ANWENDUNG funktionieren.
myapp = ("C:\WINDOWS\Notepad.exe ")
AppActivate myapp

Bei Verwendung dieses Befehls erhalte ich immer die Fehlermeldung Laufzeitfehler '5'
Ungültiger Prozeduraufruf oder ungültiges Argument.

Verwende ich den Aufruf wie zu Beginn, wird die Datenbank nochmals mit Notepad geöffnet.
Die von mir gewollte Fensterumschaltung auf die schon geöffnete XML-Datei mit Notepad wird nicht erledigt.

Bitte um Hilfe

Gerry


Anzeige

46
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Von Excel auf geöffnete Notepad umschalten in VBA
22.11.2025 01:38:53
xlKing
Hey Gerry,

warum hast du mir nicht geantwortet? Du solltest doch die Open-Anweisung nutzen um aus der Textdatei zu lesen oder in diese zu schreiben. Da hatte ich dir extra einen Link mit Beispielcode gepostet. Hast du dir den schon angesehen? Notepad ist nur für die direkte und schnelle Bearbeitung zwischendurch (ohne Verwendung von Excel). Das solltest du natürlich zuerst probieren, ob VDJ eine bearbeitete Datei überhaupt annimmt, sonst macht es keinen Sinn.

Gruß Mr. K.
Anzeige
AW: Von Excel auf geöffnete Notepad umschalten in VBA
26.11.2025 15:08:05
Excelunkt
Moin Gerry.
1. kannst du nicht auf Excel 2010 oder größer upgraden, das würde das Leben einfacher machen.
(Powerquery zum öffnen von xml dateien in excel)
2. Freundlicher tipp: Nutz bitte den Code knopf wenn du Code angibst, ansonsten ist es sehr schwer das zu lesen
3. Wie speicherst du die Exceldatei als XML ?
Speichern unter - dann auswählen als XML ? Denn wenn ja sollte es kein unterschied zu Notepad machen,
Wenn du die dateiendung nachträglich änderst also Sth.xls -> sth.xml dann geht das nicht, excel muss xml sauber konvertieren.
4. Liegt Notepad.exe wirklich im C:\Windows\Programms\Notepad.exe ? - teste das über terminal (powershell, commandeingabe ...) gibt dort folgendes ein: start C:\Windows\Programms\Notepad.exe
startet das Notepad?
Anzeige
AW: Von Excel auf geöffnete Notepad umschalten in VBA
26.11.2025 19:52:07
gerry
Hallo Excelunkt

Zu 1)
ich habe das einlesen und speichern der XML-Datenbank mit Excel sowohl auf einem PC mit Win-7 und Office 2007 als auch mit einem PC mit Win-10 und Office 2013 ausprobiert.
Einlesen der XML-Datenbank in Excel funktioniet einwandfrei.
Datei Speichern oder Speichern unter xml funktioniert auch. Jedoch will das Programm Virtual DJ die Datenbank nicht mehr. Deshalb der Umweg über Notepad.

Zu 3.) Wie vorhin geschrieben, will das Musikprogramm die mit Excel als XML-Datei gespeicherte Musikdatenbank nicht.
Es erscheint die Meldung "Datenbank defekt".
Kopiere ich die veränderten Daten aus Excel ganz normal (Bearbeiten / Kopieren) über die Zwischenablage zurück nach Notepad (bearbeiten / einfügen) , und speichere ich die XML-Datei mit Notepad ganz normal mit dem Befehl "Speichern", so erkennt und akzeptiert Virtul DJ die Datenbank mit allen geänderten Daten.

Zu 4.) Notepad.exe ist im Verzeichnis C:\Windows gespeichert, so wie es in meinem Macro angesprochen wird.
Anzeige
AW: Von Excel auf geöffnete Notepad umschalten in VBA
26.11.2025 20:06:28
Excelunkt
Moinsen.
Danke für die ausführliche Antwort.

Bevor ich mich jetzt endgültig an den Code mache, kannst du einmal die Notepad Xml & einmal die Excel ausgang xml mit Notepad öffnen (rechtsklick öffnen mit).

Sehen die Xml Dateien unterschiedlich aus?
AW: Von Excel auf geöffnete Notepad umschalten in VBA
26.11.2025 20:40:24
gerry
Von der Struktur her besteht zwischen der unveränderten original XML-Datei zu der in Excel veränderten XML-Datei in Notepad kein Unterschied.
Vom Dateninhalt her besteht natürlich ein Unterschied, da ja in Excel Feldinhalte verändert wurden
Unveränderte XML-Datei https://www.herber.de/bbs/user/179717.zip
veränderte mit Excel bearbeitete XML-Datei https://www.herber.de/bbs/user/179718.zip

Die bewußten Änderungen sind Feldinfos von ...
5. Titel Play Ball
13. Titel Rock the House
17. Titel Rock the Blues
20. Titel Rock or bust

Ach ja, sendkey für speichern in Notepad funktioniert leider nicht immer
Anzeige
AW: Von Excel auf geöffnete Notepad umschalten in VBA
27.11.2025 00:04:15
schauan
1)
... zum Speichern im Notepad hatte ich ja zwei zusätzliche Befehle gesendet.

2)
hier mal ein code, wie ich es machen würde. Im Explorer sind die Files gleich groß, 7970 Bytes. Im Hexeditor sind die Files sowohl inhaltlich als auch mit der Endposition identisch. Bearbeitet wurde hier natürlich nichts, da sind noch die "alten" Files verwendet und nicht die vorhin geposteten.

Filecompare ist auch zufrieden. ...v6 (2) ist hier das Original. Im Code lese ich daraus ein und schreibe in ... v6

C:\Test\A>fc /b "VirtualDJ Local Database v6.xml" "VirtualDJ Local Database v6 (2).xml"
Vergleichen der Dateien VirtualDJ Local Database v6.xml und VIRTUALDJ LOCAL DATABASE V6 (2).XML
FC: Keine Unterschiede gefunden

Man muss es aber nicht so machen, Notepad wird schon auch irgendwann klappen ;-)

Man muss schauen, ob die bearbeiteten Daten noch passen. In den Zellen steht einiges unsichtbares. Kann man leicht mit =Länge(A1) usw prüfen, da kommt doch schon ab und zu mehr raus, als man da sieht. Schlimmstenfalls macht man sich da beim Ändern was kaputt.

Einfaches Beispiel -
A99 Formel irgendwo, z.B. B99: =Länge(A99) Ergebnis: 9 Der Text hat aber nur 7 Zeichen ...

Option Explicit

Sub Einlesen()
'Spalte A ggf. zuvor manuell leeren oder hier entsprechend programmieren
'Variablendeklarationen
Dim arrXML
Const strXMLFile As String = "c:\test\A\VirtualDJ Local Database v6 (2).xml"
'Daten aufnehmen
arrXML = WorksheetFunction.Transpose(Split(FileReadAll(strXMLFile), vbLf))
Range("A1").Resize(UBound(arrXML)) = arrXML
'FertigMeldung ausgeben
MsgBox "Fertig!"
End Sub

Public Sub Schreiben()
'Variablendeklarationen
Dim iFi%, strTxt As String, arrTxt
Const strXMLFile As String = "c:\test\A\VirtualDJ Local Database v6.xml"
'Datei Inhalt ueberschreiben
'Text aus Bereich aufnehmen
strTxt = Join(WorksheetFunction.Transpose(Range("A1").Resize(Cells(Rows.Count, 1).End(xlUp).Row)), vbLF)
'Text von einem zusaetzlichen Zeichen am Ende befreien ;-)
strTxt = Left(strTxt, Len(strTxt) - 1)
'freie Dateinummer ermitteln
iFi = FreeFile
'Datei zum schreiben oeffnen
Open strXMLFile For Output As #iFi
'ausgeben
Print #iFi, strTxt
'Datei schliessen
Close #iFi
'FertigMeldung ausgeben
MsgBox "Fertig!"
End Sub

Public Function FileReadAll(ByVal strFile As String) As String
'Wenn die Datei nicht existiert, dann Funktion verlassen
If Dir$(strFile, vbNormal) = "" Then Exit Function
'Variablendeklarationen
Dim sText$, iFi%
'Datei komplett einlesen
'freie Dateinummer ermitteln
iFi = FreeFile
'Datei binaer oeffnen
Open strFile For Binary As #iFi
'Einlesen
sText = Space$(LOF(iFi))
Get #iFi, , sText
'Datei schliessen
Close #iFi
'Text zurueckgeben
FileReadAll = sText
End Function
Anzeige
AW: Von Excel auf geöffnete Notepad umschalten in VBA
27.11.2025 04:12:11
gerry
Ich bitte um Verzeihung.
Beim Packen der XML-Dateien ist mir ein Fehler passiert.

Hier die richtige unveränderte XML-Datenbank ohne Infoaktualisierung mit 100 Zeilen mit 7,7kb https://www.herber.de/bbs/user/179723.zip
Nun die richtige veränderte Datei nach Infoaktualisierung mit 104 Zeilen mit 10,4kb https://www.herber.de/bbs/user/179724.zip


Betreffend 2 zusätzlicher Sendkeys.
Das ändert leider nichts. Die Daten werden zwar in Notepad eingefügt, jedoch funktioniert der Befehl zum Datei speichern nicht.
Anzeige
AW: Von Excel auf geöffnete Notepad umschalten in VBA
27.11.2025 08:36:56
schauan
zum Thema Notepad - hier wieder ein Film
https://www.herber.de/bbs/user/179725.zip

und hier ein Bild wo man die zeitliche Abfolge sieht, wann die xml gespeichert, der Film aufgenommen, gewandelt und komprimiert wurde ....
Userbild



Anzeige
AW: ... einen Hinweis ...
27.11.2025 10:41:34
schauan
... hätte ich noch.
Falls Du mit dem Nummernblock der Tastatur arbeiten solltest, prüfe, ob der eingeschalten ist. Zu möglichen Nebeneffekten von SENDKEYS gehört z.B. das Abschalten selbigens - auch wenn das MS nicht verraten hat :-( Manchmal ist Rollen aktiviert. Oder ...

siehe z.B. dort:
https://www.clever-excel-forum.de/Thread-SendKeys-Numlocktaste-wird-verstellt?pid=278656#pid278656



Anzeige
AW: ... einen Hinweis ...
27.11.2025 16:00:41
gerry
Danke für den Tip. Das wußte ich nicht.
AW: ... einen Hinweis ...
28.11.2025 02:36:09
gerry
Der Hinweis mit dem Link ist interessant.

Auch ich habe da Problem, daß oft die Num-Taste deaktiviert wird.
Durch diesen Hinweis ist mir klar, weshalb die Num-Funktion oft ausgeschaltet ist.

Aus diesem Grund wollte ich die Funktion in meine Macros einbinden.
Es gelingt mir nicht.

Egal, ob ich den Code als Sub oder als Function einbinden will, die Zeile
Private Declare PtrSafe Function GetKeyboardState Lib "user32" ( _
pbKeyState As Byte) As Long
wird immer Rot - also Fehlerhaft - angezeigt

Es würde mir eigentlich von https://www.herber.de/forum/archiv/1924to1928/1927149_Status_der_NumLockTaste.html
die Sub für das einschalten genügen.
Nur benötige ich den Aufruf für die Sub NumBlockEinschalten an mehreren Stellen in verschiedenen Macros.

Bitte um Aufklärung

Anzeige
AW: Von Excel auf geöffnete Notepad umschalten in VBA
27.11.2025 08:02:26
schauan
... 'ne kleine Änderung würde ich noch vornehmen. Die beiden vbLF würde ich durch vbCRLF ersetzen. Man muss es sich ja nicht noch mit den Steuerzeichen verderben ;-)
AW: Von Excel auf geöffnete Notepad umschalten in VBA
27.11.2025 16:01:49
gerry
Danke für den Hinweis
AW: Von Excel auf geöffnete Notepad umschalten in VBA
26.11.2025 15:46:41
Excelunkt
Wie aus deinem link hervorgeht wurde PowerQuery 2013 veröffentlicht, aber im selben Zuge für Excel 2010 - genau wie Excel 2013 als AddIn freigeschaltet.

Steht unteranderem:
in deinem Link: https://www.clever-excel-forum.de/Thread-Power-Querry-Infos-Tutorials?pid=79920#pid79920
oder besser: https://www.microsoft.com/en-us/microsoft-365/blog/2015/09/10/integrating-power-query-technology-in-excel-2016/

Idealerweise wäre Natürlich Excel2016 - da habe ich schon eine Kompatibilitätsprüfung durchgeführt fürs einlesen von XML dateien - aber bei 2013 / 2010 kann man das auch über den AddIn weg erreichen,
Anzeige
AW: Von Excel auf geöffnete Notepad umschalten in VBA
26.11.2025 16:15:39
schauan
Jupp, man muss es aber eben gesondert runterladen und installieren.
Bei den Versionen würde ich so aktuell umstellen wie es die Motivation hergibt :-) Einlesen in Excel und Öffnen von Notepad ist ja vordergründig nicht das Problem. Das funktioniert. Kann sein, dass das Speichern direkt funktioniert. Da kann man einen Dateivergleich mit der Notepad Datei machen.
Nichtsdestotrotz glaube ich nicht, dass ein Excel Versionsupdate den gewünschten Wechsel zum offenen Notepad befördert :-( Ich hatte ja bisschen was geschrieben zu möglichen Problemen im Fileformat und Alternativen zur Speicherung. Es soll halt' Notepad sein...
Anzeige
AW: Von Excel auf geöffnete Notepad umschalten in VBA
26.11.2025 17:27:34
Excelunkt
Jo da gehe ich vollumfänglich mit.
(Das mit powerpoint ist bestimmt irgendwas mit dem Pfad, etwas was wir schlecht aus der Ferne Diagnostizieren können)

Mein Vorschlag wäre daher komplett anders.
Er soll Excel 2010/2013 oder besser Excel 2016 / 365 aufsetzen, dann könnte PowerQuery helfen, das hat ja extra ein XML einleser und dann das mit dem Herausspeichern auch klappen.

Ich kann mir schwer vorstellen, das sein externen Programm Excel XML nicht lesen kann dafür Notepad, schließlich lese ich auch regelmäßig xml von excel in andere Programme ein.

Anzeige
AW: Von Excel auf geöffnete Notepad umschalten in VBA
26.11.2025 20:12:14
gerry
Offensichtlich hat die XML-Datei von VirtualDJ ein ganz besonderes Format
Sowohl mit Excel 2007 als auch mit Excel 2013 kommt bei Öffnen "als XML-Tabelle" die Meldung
"Die angegebene XML-Quelle bezieht sich nicht auf das Schema. Excel
wird ein Schema erstellen, das auf den XML-Quelldaten basiert."

Bei Speichern unter (sowohl 2003 als auch 2013) kommt die Fehlermeldung .
"Die XML-Daten können nicht exportiert oder gespeichert werden. Die XML-Zuordnungenin diesem Arbeitsblatt sind nicht exportierbar."

Da die XML-Datei mit Notepad geöffnet und geleen werden kann, und auch auf divesen Webseiten steht, daß eine Bearbeitung mit Notepad möglich ist, habe ich den Versuch der Bearbeitung mit Notepad unternommen.
Weil aber die Suche nach den Datensätzen in Notepad schwierig bis unmöglich ist, importiere ich die Daten von Notepad nach Excel und erledige die Datenänderung in Excel.
Danach erfolgt das Zurückkopieren der veräderten Daten von Excel nach Notepad.

Das alles funktioniert problemlos.
Nur das Umschalten von Excel auf Notepad (Nach dem markieren und kopieren der Daten in Excel und vor dem einfügen der Daten in Notepad) funktioniert nicht über VBA.
Ich erhalte die Fehlermeldung 5
Wenn ich die alte, unveränderte XML-Datei mit Notepad vor dem bearbeiten in Excel schließe, und nach dem markieren und kopieren der Daten in Excel die alte unveränderte XML-Datei lade, kann ich die Daten aus der Zwischenablage in Notepad einfügen.
Anzeige
AW: Von Excel auf geöffnete Notepad umschalten in VBA
23.11.2025 23:34:58
Gerry
Ich habe deinen Beitrag gelesen und den Befehl getestet.

Nach Änderung auf den richtigen Dateinamen habe ich den Befehl wie folgt verwendet.
Open "D:\VirtualDJ Local Database v6.xml" For Input As #1

Es tut sich nichts. Es werden keinerlei Daten in irgend eine Excel-Mappe geschrieben und es wird auch kein Programm mit den Daten der Datei geöffnet.
Auch wenn ich den Befehl
Open "D:\VirtualDJ Local Database v6.xml" For Output Shared As #1
verwende, tut sich nichts.

ich habe laut deiner Info den Befehl wie auf der Seite https://learn.microsoft.com/de-de/office/vba/language/reference/user-interface-help/open-statement beschrieben, verwendet.
Anzeige
AW: Von Excel auf geöffnete Notepad umschalten in VBA
24.11.2025 10:11:47
schauan
Hallöchen,

1) @Gerry
Handling von Notepad:
https://www.reddit.com/r/excel/comments/1hauw5u/vba_code_in_ms_excel_vba_editor_for_saving_a/

2) @xlKing (&Gerry)
Die einzige Möglichkeit, daß die veränderte XML-Datei von Virtual DJ erkannt und akzeptiert ist, daß die Datei mit Notepad gespeichert wird.
ich denke, indirekt beantwortet das die Frage.
Ein Problem wird wohl sein, dass mit dem "einfachen" Open, Print, Close usw. das File nicht in UTF-8 gespeichert wird, obwohl es das vorher war.
Wie das geht, findet man zuhauf, z.B. https://www.clever-excel-forum.de/Thread-per-VBA-in-UTF-8-wandeln?pid=300388#pid300388

3) @Gerry
poste doch auch den Archivlink, wenn da ein Zusammenhang besteht ...


Anzeige
AW: Von Excel auf geöffnete Notepad umschalten in VBA
24.11.2025 14:10:15
Gerry
Danke für die Antworten.
Leider gehen die Tips an meiner Frage vorbei.

Das einlesen der Daten aus der XML-Datei ist kein Problem.
Das bearbeiten der Daten aus der XML-Datei funktioniert auch.
Mein Problem ist, daß ich beim zurückschreiben der in Excel veränderten Daten nicht auf das Notepadfenster umschalten kann, um die veränderten Daten in Notepad einzufügen.

Erledige ich diese Schritte manuell (also nicht per VBA) funktioniert es.
Ich habe auch schon versucht, die manuell erledigten Schritte mittels Makroaufzeichnung zu speichern. Das funktioniert leider nicht, da die Makroaufzeichnung leer bleibt.

Der folgende Befehl öffnet die Datei nochmals
ReturnValue = Shell("C:\WINDOWS\Notepad.exe " & filePath, 1) ' Startet Notepad
' und öffnet "D:\VirtualDJ Local Database v6.xml".
AppActivate ReturnValue

Mit dem Befehl sollte die Umschaltung ausgeführt werden. Das funktioniert bei mir jedoch nicht
ReturnValue = ("C:\WINDOWS\Notepad.exe " & filePath, 1)
AppActivate ReturnValue

Gerry
Anzeige
AW: Von Excel auf geöffnete Notepad umschalten in VBA
24.11.2025 19:00:38
Gerry
Danke für die Antworten.
Leider gehen die Tips an meiner Frage vorbei.

Das einlesen der Daten aus der XML-Datei ist kein Problem. Zuerst öffne ich die XML-Datei mit Notepad, danach kopiere ich die Daten aus Notepad in eine leere Exceltabelle.
Das bearbeiten der Daten (in der Exceltabelle) aus der XML-Datei funktioniert auch.
Mein Problem ist, daß ich beim zurückschreiben der in Excel veränderten Daten nicht auf das Notepadfenster umschalten kann, um die veränderten Daten in Notepad einzufügen.

Erledige ich diese Schritte manuell (also nicht per VBA) funktioniert es.
Ich habe auch schon versucht, die manuell erledigten Schritte mittels Makroaufzeichnung zu speichern. Das funktioniert leider nicht, da die Makroaufzeichnung leer bleibt.

Der folgende Befehl öffnet die Datei nochmals
ReturnValue = Shell("C:\WINDOWS\Notepad.exe " & filePath, 1) ' Startet Notepad
' und öffnet "D:\VirtualDJ Local Database v6.xml".
AppActivate ReturnValue

Mit dem Befehl sollte die Umschaltung ausgeführt werden. Das funktioniert bei mir jedoch nicht
ReturnValue = ("C:\WINDOWS\Notepad.exe " & filePath, 1)
AppActivate ReturnValue

Gerry
Anzeige
AW: ...und was ...
24.11.2025 19:08:58
schauan
... ist da jetzt anders als 13:10 ?
... passiert wenn Du meinen Tipp mit dem Warten umsetzt ?
AW: ...und was ...
24.11.2025 19:31:38
gerry
Da hast du Recht. In Notepad kann ich die Daten nicht bearbeiten.
Da aber auch das direkte importieren der XML-Datei nach Excel nicht funktioniert, wähle ich den Umweg über Notepad (Editor).
Ich öffne die XML-Datei mit dem Editor.
Hier erscheint die XML-Datei lesbar als strukturierter Text.
Da jedoch das gezielte editieren des Textes in Notepad nicht möglich ist, kopiere ich den Text von Notepad und füge alles in eine leere Exceltabelle ein.
Nun erscheint der Text von Notepad lesbar in der Exceltabelle.
Ein Vorteil vom Text in der Exceltabelle ist, daß jede Zeile eine eigene Zeile in der Exceltabelle ist. Daher ist jede Zeile der XML-Datei eine einzelne Excelzelle.
Der Vorteil in der Exceltabelle ist, daß ich hier mittels VBA gezielt nach bestimmten Textinhalten suchen kann.
Nun suche ich z.B. nach dem Speicherpfad eines Liedtitels. Wird der Titel gefunden, merke ich mir die Zeilennummer.

Gerry
Anzeige
AW: ...und was ...
24.11.2025 19:41:13
gerry
Bin ich gesperrt? Ich kann nur mehr eine Zeile schreiben
AW: ...und was ...
24.11.2025 19:38:09
schauan
... das ist schon klar, Du schreibst es ja schon reichlich oft. Allerdings kann ich daraus nicht ablese, ob das mit dem Wait was gebracht hat:

Du:
Laut Internet sollte das umschalten mit dem Befehl AppActivate ANWENDUNG funktionieren.
myapp = ("C:\WINDOWS\Notepad.exe ")
AppActivate myapp

Bei Verwendung dieses Befehls erhalte ich immer die Fehlermeldung Laufzeitfehler '5'
Ungültiger Prozeduraufruf oder ungültiges Argument.


ich:

ist eventuell das Öffnen von Notepad etwas langsam.
Füge also davor folgende Zeile ein:

Application.Wait Now + TimeValue("00:00:02")

und eventuell zu weiteren Sendkeys ebenfalls kurze Wartezeiten. Mach aber in der Zeit nix, - zumindest nicht am Rechner, Kaffee trinken geht schon ;-)
Die SendKeys gehen an die aktive Anwendung und wenn Du wechselst ....

Anzeige
AW: ...und was ...
24.11.2025 19:45:36
gerry
Notepad ist ja schon offen. Nur das Umschalten (Focus auf Fenster) von Excel auf Notepad funktioniert nicht
AW: ...und was ...
24.11.2025 20:32:46
schauan
Du kannst doch Notepad einfach nochmal öffnen und dort dann alles reinkopieren ... Ansonsten, wenn Du Notepad verlässt, geht das ggf. in Richtung API-Programmierung und wird deutlich komplexer.
3 Sekunden für Kopieren, Einfügen, Speichern und dafür zwei Wochen Diskussion ist schon prickelnd.

Hattest Du wirklich schon alle VBA-Varianten getestet?

Write
Print
Put
WriteLine (Textstream)
ADODB.Stream
...

das Ganze auch gerne, sofern möglich, mit verschieden Zeilenabschlüssen wie vblf, vbcr, vblfcr oder ohne, ... was wird da eigentlich gebraucht? Wenn man's weiß, muss man ja nicht alles testen ...

Anzeige
AW: ...und was ...
24.11.2025 20:49:20
gerry
Klar, ich kann, nachdem ich die Daten aus der xml-Datei von Notepad nach Excel in eine leere Tabelle kopiert habe, Notepad schließen.
Nach ändern der Daten und kopieren der in Excel geänderten Daten in die Zwischenablage kann ich Notepad wieder neu öffnen und danach die Daten aus der Zwischenablage in die nochmals neu geöffnete Notepad-Datei hineinkopieren. Das mach ich aktuell auch so.

Aber wieso soll ich mit einer Krücke arbeiten (und Notepad schließen und wieder öffnen), wenn es laut VBA-Beschreibung einen Befehl gibt, wo der Focus von einer Anwendung auf eine andere Anwendung umgestellt werden kann.
Ja, irgend etwas mache ich anscheinend falsch - aber was? Deshalb frage ich ja hier die Spezialisten.
Anzeige
AW: ...und was ...
24.11.2025 21:04:00
schauan
ja, was soll ich sagen? Mal abgesehen davon, dass ich mit AppActivate "Notepad" eigentlch kein Problem habe. Das ist dann wohl auch ähnlich wie eine Ferndiagnose von einem Fahrzeugproblem. Man überlege, warum eine Tür nicht aufgeht. Zu weit weg, falscher Schlüsel, Schlüsselbatterie leer, Fahrzeugbatterie leer, Batterie selbst gewechselt und Schlüssel nicht "angelernt", Schloss defekt, Schloss eingefroren, Tür klemmt, ... Wenn der Kunde wengstens sagen würde, ob der Schlüssel mit Fernbedienung ist, Keyless, ...

Die Frage nach den VBA-Möglichkeiten ist übrigens noch offen und nach dem Format / einer Beispieldatei wurde schon im letzten Thread gefragt ....
Anzeige
AW: ...und was ...
24.11.2025 22:49:41
gerry
Ich habe zwar schon mehrmals den NICHT FUNKTIONIERENDEN Code gepostet, aber bitte. Hier nochmals der Code

Den Beginn mit Tabelle öffnen,Datensatz suchen und Datensatz ändern lasseich weg.
Der gepostete Code beginnt bei markieren der geänderten Daten in Exceltabelle
MsgBox "Von " & alletitel & " zu aktualisierenden Titeln " & vbCrLf _
& "wurden " & aktualisiertetitel & " Titel aktualisiet. " & vbCrLf _
& nichtgefundentitel & " Titel wurde(n) nicht gefunden. " & vbCrLf _
& "Die nicht gefundenen Titel waren " & vbCrLf _
& fehlendetitel


GefuelltenBereichMarkieren ' Alle Zellen mit Inhalt aus Tabelle1 werden markiert
Selection.Copy ' Die markierten Zellen werden in die Zwischenablage kopiert

'
' ReturnValue = Shell("C:\WINDOWS\Notepad.exe " & filePath, 1) ' Startet Notepad
' und öffnet "D:\VirtualDJ Local Database v6.xml".
' AppActivate ReturnValue ' Activate the Notepad.

AppActivate "Notepad" ' Activate Microsoft

For I = 1 To 300 ' Set up counting loop.
Next I ' to add each value of I.

SendKeys "^(a)", True ' Die Tastenkombination STRG + A wird an Notepad geschickt.
' Mit STRG + A wird der gesamte Inhalt markiert.
AppActivate ReturnValue ' Activate the Notepad.
For I = 1 To 300 ' Set up counting loop.
Next I ' to add each value of I.

SendKeys "^(V)", True ' Die Tastenkombination STRG + V wird an Notepad geschickt.
' Mit STRG + V wird der gesamte Inhalt aus der Zwischenablage eingefügt.
AppActivate ReturnValue ' Activate the Notepad.
For I = 1 To 300 ' Set up counting loop.
Next I ' to add each value of I.

SendKeys "^(S)", True ' Die Tastenkombination STRG + S wird an Notepad geschickt.
' Mit STRG + S wird die geänderte Datei gespeichert.
Anzeige
AW: ...das wollte ...
24.11.2025 23:23:46
schauan
... ich jetzt nicht sehen. Mal abgesehen davon, dass da Anfang und Ende vom Makro fehlen. Ich suche jetzt aber auch nicht, ob Du das schon mal komplett gepostet hast. Ich glaube nicht :-(

Ich habe mehrere Varianten geschrieben und wollte wissen was Du davon ausprobiert hast. Außerdem fehlt immer noch eine Muster -xml...

Wir können natürlich auch noch zwei Wochen über die nicht funktionierende Variante diskutieren und gefühlt in jedem Post das Gleiche schreiben.... Ich habe Zeit und keinen Druck. Ich kann auch ein Bild posten oder ein Video verlinken wo man sieht das Excel bei mir was ins Notepad eingefügt hat. Das wird Dir aber auch nicht helfen :-( Wie gesagt, Ferndiagnose...
Anzeige
AW: ...das wollte ...
25.11.2025 02:11:46
gerry
https://www.herber.de/bbs/user/179700.zip

Entschuldigung, daß ich übersehen habe, daß eine Beispieldatei der XML-Datei gewünscht wird.
Hiermit lade ich die gewünschte Datei hoch. Mußte die Datei packen, da XML-Dateien nicht erlaubt sind

Gerry
Anzeige
AW: ...das wollte ...
25.11.2025 08:09:30
schauan
so klappt es bei mir ...

Sub test()


'Die Datei VirtualDJ Local Database v6.xml ist bereits im Editor geoeffnet
'Die Daten wurden kopiert und in Excel eingefuegt.
'Anschließend wird dieses Makro gestartet.
'Die Wartezeiten kann man testen, die eine oder andere vielleicht weglassen

'MsgBox "Von " & alletitel & " zu aktualisierenden Titeln " & vbCrLf _
& "wurden " & aktualisiertetitel & " Titel aktualisiet. " & vbCrLf _
& nichtgefundentitel & " Titel wurde(n) nicht gefunden. " & vbCrLf _
& "Die nicht gefundenen Titel waren " & vbCrLf _
& fehlendetitel

'Ein Makro GefuelltenBereichMarkieren gibt es hier nicht ....
'GefuelltenBereichMarkieren ' Alle Zellen mit Inhalt aus Tabelle1 werden markiert
'das Markieren kann man so machen
'--> Range(Cells(1, 1), Cells(Cells(Rows.Count, 1).End(xlUp).Row, 1)).Select

'Selection.Copy ' Die markierten Zellen werden in die Zwischenablage kopiert
'-- man kann die beiden Zeilen zu einer zusammenfassen!
Range(Cells(1, 1), Cells(Cells(Rows.Count, 1).End(xlUp).Row, 1)).Copy

' ReturnValue = Shell("C:\WINDOWS\Notepad.exe " & filePath, 1) ' Startet Notepad
' und öffnet "D:\VirtualDJ Local Database v6.xml".
' AppActivate ReturnValue ' Activate the Notepad.

AppActivate "Notepad" ' Activate Microsoft

'was soll diese Schleife? Da passiert doch nix ausser hochzählen. Ist das Deine Wartezeit?
'For I = 1 To 300 ' Set up counting loop.
'Next I ' to add each value of I.

'das hatte ich vorgeschlagen
Application.Wait Now + TimeValue("00:00:02")

SendKeys "^(a)", True ' Die Tastenkombination STRG + A wird an Notepad geschickt.
' Mit STRG + A wird der gesamte Inhalt markiert.

'AppActivate ReturnValue ' Activate the Notepad. 'wozu??? Ist doch schon aktiv,
'sonst würde SendKeys "^(a)", True icht fuktionieren
'Ich schrieb, Du sollst in der Zeit nix mchen!

'was soll diese Schleife? Da passiert doch nix ausser hochzählen. Ist das Deine Wartezeit?
'For I = 1 To 300 ' Set up counting loop.
'Next I ' to add each value of I.

'das hatte ich vorgeschlagen
Application.Wait Now + TimeValue("00:00:02")

SendKeys "^(V)", True ' Die Tastenkombination STRG + V wird an Notepad geschickt.
' Mit STRG + V wird der gesamte Inhalt aus der Zwischenablage eingefügt.

'AppActivate ReturnValue ' Activate the Notepad. 'wozu??? Ist doch schon aktiv,
'sonst würde SendKeys "^(V)", True icht fuktionieren
'Ich schrieb, Du sollst in der Zeit nix mchen!
'AppActivate ReturnValue ' Activate the Notepad.

'was soll diese Schleife? Da passiert doch nix ausser hochzählen. Ist das Deine Wartezeit?
'For I = 1 To 300 ' Set up counting loop.
'Next I ' to add each value of I.

'das hatte ich vorgeschlagen
Application.Wait Now + TimeValue("00:00:02")

SendKeys "^(S)", True ' Die Tastenkombination STRG + S wird an Notepad geschickt.
' Mit STRG + S wird die geänderte Datei gespeichert.

'Der Seaichern-Dialog erscheint und muss ebenfalls gesteuert werden!
'das hatte ich vorgeschlagen
Application.Wait Now + TimeValue("00:00:02")

SendKeys "%S", True ' ~Die Tastenkombination ALT + S wird an Notepad geschickt.

'das hatte ich vorgeschlagen
Application.Wait Now + TimeValue("00:00:02")

SendKeys "%J", True ' ~Die Tastenkombination ALT + J wird an Notepad geschickt.

End Sub

Anzeige
AW: ...das wollte ...
25.11.2025 14:27:57
gerry
Das ist im Prinzip jenes Makro, da ich aktuell verwende.
Stimmt, die Schleife ist die Wartezeit.
Ob ich jetzt den Vorschlag mit der Schleife, die ich irgendwo im www gefunden habe verwende, oder ob ich den hier genannten Vorschlag verwende, ist im Prinzip egal und ändert absolut nichts darann, daß der Befehl für das Umschalten von Excel auf Notepad bei meinem Office 2007 nicht funktioniert.
Den genannten Vorschlag für markieren werde ich auf jeden Fall ausprobieren.

Die Lösung für das Umschalten von Excel - nach markieren und kopieren - auf die noch immer geöffnete Anwendung Notepad fehlt trotzdem noch immer.
Wie schon geschrieben verwende ich aktuell die folgende Krückenlösung
Nach dem öffnen der xml Datenbank mit Notepad, und dem kopieren des Inhaltes in eine leere Exceltabelle schließe ich Notepad, da das spätere Umschalten auf Notepad NICHT FUNKTIONIERT.

Sub VirtualDJ_Datenbank_oeffnen()
'
Dim filePath As String
Dim aba As Integer

Tabellennameumschalt = "Virtual DJ pro V.3"
suchbereichTest = "A3:A" & CStr(letztzeil) ' Importierte XML-Datenbank in Tabelle Titelaktualisierung.xls Datenbereich
filePath = "D:\VirtualDJ Local Database v6.xml"
' Zuerst muß die XML-Datei "VirtualDJ Local Database v6.xml" mit Editor (Notepad) geöffnet werden.
' Startet Notepad und öffnet die angegebene Datei
' Danach alles markieren, kopieren,
' Die Daten in Tabelle "Titelaktualisierung.xls" Tabelle1 einfügen erledigt dieses Makro
'
Dim ReturnValue, I

ReturnValue = Shell("C:\WINDOWS\Notepad.exe " & filePath, 1) ' Startet Notepad
' und öffnet "D:\VirtualDJ Local Database v6.xml".
AppActivate ReturnValue ' Activate the Notepad.

For I = 1 To 200 ' Set up counting loop.
Next I ' to add each value of I.

SendKeys "^(a)", True ' Die Tastenkombination STRG + A wird an Notepad geschickt.
' Mit STRG + A wird der gesamte Inhalt markiert.
SendKeys "^(c)", True ' Die Tastenkombination STRG + C wird an Notepad geschickt.
' Mit STRG + C wird der gesamte Inhalt in die Zwischenablage kopiert.
'
SendKeys "%{F4}", True 'Schließen von Notepad mit [Alt]+[F4]


Windows("Titelaktualisierung.xls").Activate ' Die Exceltabelle Titelaktualisierung.xls wird aktiviert
Sheets("Tabelle1").Select ' Das Blatt Tabelle1 wird aufgerufen.

GefuelltenBereichMarkieren ' befüllte Zellen markieren
Cells.Clear ' Inhalt aus allen Zellen löschen

Range("A1").Select ' Die Zelle A1 wird markiert
ActiveSheet.Paste
Range("B1").Select ' Die Zelle B1 wird markiert
End Sub

Nach dem ändern der Titelinformationen in Excel wird der Tabelleninhalt markiert und in die Zwischenablage kopiert.
Da der Befehl für das umschalten von einer Anwendung zu einer anderen Anwendung (Focus von einer Anwendung zu einer anderen Anwendung) NICHT FUNKTIONIERT, muß ich eben die Krückenlösung mit nochmaligen öffnen der xml-Datenbank mit Notepad erledigen.

MsgBox "Von " & alletitel & " zu aktualisierenden Titeln " & vbCrLf _
& "wurden " & aktualisiertetitel & " Titel aktualisiet. " & vbCrLf _
& nichtgefundentitel & " Titel wurde(n) nicht gefunden. " & vbCrLf _
& "Die nicht gefundenen Titel waren " & vbCrLf _
& fehlendetitel _

GefuelltenBereichMarkieren ' Alle Zellen mit Inhalt aus Tabelle1 werden markiert
Selection.Copy ' Die markierten Zellen werden in die Zwischenablage kopiert

' Zuerst muß die XML-Datei "VirtualDJ Local Database v6.xml" mit Editor (Notepad) wieder geöffnet werden.
' Die folgenden 4 Zeilen Quellcode sollen durch einen funktionierenden Befehl für das umschalten von Excel
' auf die schon mit Notepad geöffnete XML-Datenbank ersetzt werden.
ReturnValue = Shell("C:\WINDOWS\Notepad.exe " & filePath, 1) ' Startet Notepad
' und öffnet "D:\VirtualDJ Local Database v6.xml".
AppActivate ReturnValue ' Activate the Notepad.

For I = 1 To 300 ' Set up counting loop.
Next I ' to add each value of I.

SendKeys "^(a)", True ' Die Tastenkombination STRG + A wird an Notepad geschickt.
' Mit STRG + A wird der gesamte Inhalt markiert.
For I = 1 To 300 ' Set up counting loop.
Next I ' to add each value of I.

SendKeys "^(V)", True ' Die Tastenkombination STRG + V wird an Notepad geschickt.
' Mit STRG + V wird der gesamte Inhalt aus der Zwischenablage eingefügt.
For I = 1 To 300 ' Set up counting loop.
Next I ' to add each value of I.

SendKeys "^(S)", True ' Die Tastenkombination STRG + S wird an Notepad geschickt.
' Mit STRG + S wird die geänderte Datei gespeichert.

Hier wurde der Befehl für markieren und kopieren noch nicht - so wie vorgeschlagen - geändert.

Da es einen VBA-Befehl für das umschalten von einer Anwendung auf eine andere Anwendung gibt, dieser jedoch bei mir nicht funktioniert, würde ich gerne die Problemlösung erfahren.
Die Gründe sind einfach. Erstens möchte ich wissen, wo mein Fehler liegt.
Zweitens erspare ich mir Programmcode für unnötiges schließen der Anwendung und nochmaliges öffnen der Anwendung.
Anzeige
AW: ...das wollte ...
25.11.2025 16:31:18
gerry
Wie vorgeschlagen habe ich die Änderungen vom Beitrag vom 25.11.2025 um 07:09:30Uhr getestet.

Der Befehl
Range(Cells(1, 1), Cells(Cells(Rows.Count, 1).End(xlUp).Row, 1)).Copy
funktioniert und erspart eine Zeile Code (Wollte ich sowieso testen)

Der Befehl
AppActivate "Notepad" ' Activate Microsoft
funktioniert NATÜRLICH NOCH IMMER NICHT.
Aus welchem Grund sollte dieser Befehl gerade jetzt funktionieren, wenn er vorher mehrmals nicht funktionierte?
Ich erhalte die selbe Fehlermeldung wie vorher.

Den Befehl
Application.Wait Now + TimeValue("00:00:02")
konnte ich nicht testen, da das Programm vorher mit der Fehlermeldung abgebrochen wurde.

Die Befehle
SendKeys "%S", True ' ~Die Tastenkombination ALT + S wird an Notepad geschickt.
und
SendKeys "%J", True ' ~Die Tastenkombination ALT + J wird an Notepad geschickt.
konnte ich auch nicht testen, da der Programmablauf schon vorher unterbrochen wurde.
Was sollen diese Tastenkombinationen überhaupt bewirken?
Anzeige
AW: ...ich wollte ...
25.11.2025 17:44:56
schauan
... einfach nur wissen, ob mein code funktioniert ... Also keine Änderungen testen, nix an meinem code ändern, einfach nur den code in ein Modul einfügen und verwenden.
Dazu musst Du, wie beschrieben, die xml zuvor mit dem Editor öffnen und in Excel einfügen. Der Editor bleibt dabei offen. Ist doch gar nicht so schwer ...

Für mich klingt Deine Antwort schon wieder so, also ob Du da versucht hast, irgendwas in Deinem Code zusammenzubasteln.

Wozu die beiden letzten sendkeys sind, sieht man dabei durch die Wartezeit von 2 Sekunden. Wenn das zu schnell geht, kann man die erhöhen. In den Kommentaren steht zumindest ein Hinweis, warum die notwendig sind.

Wie gesagt, bei mir funktioniert das. Ich hatte ja schon ein Video angeboten ... Wenn mein Originalcode - also unverändert - bei Dir nicht funktioniert, musst Du Dir wahrscheinlich jemand vor Ort kommen lassen.

Und wenn das nicht hilft, versuchst Du vielleicht doch eine der genannten Alternativen ...
Anzeige
AW: ...ich wollte ...
26.11.2025 01:16:34
gerry
Der von dir geschickte Code ist zu 95% der von mir bekannt gegebene Code.
Ob ich jetzt den von Dir veränderten Code in mein Macro einfüge, oder ob ich nur die von dir veränderten Zeilen in meinem Code ändere, ist egal.
Das Ergebnis ist das gleiche.

Abgesehen davon gibt es NUR EINE EINZIGE ZEILE / NUR EINEN EINZIGEN BEFEHL, der NICHT FUNKTIONIERT.
Das habe ich schon x-mal geschrieben und genauso oft habe ich die Fehlermeldungen gepostet.

Ich bastle nichts zusammen, sondern ich erstelle Programmabläufe.
Nur weil ich bei einem Programmbefehl Probleme habe, heißt das nicht, daß ich vom programmieren nichts verstehe.
Wozu soll ich einen kompletten, FUNKTIONIERENDEN QUELLCODE entfernen, nur weil ein einziger Befehl nicht funktioniert?

Gibt es jemanden, der die Lösung kennt, weshalb der VBA Code für den Wechsel von einer Anwendung zu einer anderen Anwendung bei meinem Excel nicht funktioniert?
Wenn ja, dann bitte um Bekanntgabe der Lösung.
Anzeige
AW: ...ich wollte ...
26.11.2025 10:24:22
schauan
Also, ich sehe da schon große Unterschiede, die für mich mehr als 5% sind - ok, ist vielleicht Meinungssache...
Bei mir fehlt das:
'

Dim filePath As String
Dim aba As Integer

Tabellennameumschalt = "Virtual DJ pro V.3"
suchbereichTest = "A3:A" & CStr(letztzeil) ' Importierte XML-Datenbank in Tabelle Titelaktualisierung.xls Datenbereich
filePath = "D:\VirtualDJ Local Database v6.xml"
' Zuerst muß die XML-Datei "VirtualDJ Local Database v6.xml" mit Editor (Notepad) geöffnet werden.
' Startet Notepad und öffnet die angegebene Datei
' Danach alles markieren, kopieren,
' Die Daten in Tabelle "Titelaktualisierung.xls" Tabelle1 einfügen erledigt dieses Makro
'
Dim ReturnValue, I

ReturnValue = Shell("C:\WINDOWS\Notepad.exe " & filePath, 1) ' Startet Notepad
' und öffnet "D:\VirtualDJ Local Database v6.xml".
AppActivate ReturnValue ' Activate the Notepad.

For I = 1 To 200 ' Set up counting loop.
Next I ' to add each value of I.

SendKeys "^(a)", True ' Die Tastenkombination STRG + A wird an Notepad geschickt.
' Mit STRG + A wird der gesamte Inhalt markiert.
SendKeys "^(c)", True ' Die Tastenkombination STRG + C wird an Notepad geschickt.
' Mit STRG + C wird der gesamte Inhalt in die Zwischenablage kopiert.
'
SendKeys "%{F4}", True 'Schließen von Notepad mit [Alt]+[F4]


Windows("Titelaktualisierung.xls").Activate ' Die Exceltabelle Titelaktualisierung.xls wird aktiviert
Sheets("Tabelle1").Select ' Das Blatt Tabelle1 wird aufgerufen.

GefuelltenBereichMarkieren ' befüllte Zellen markieren
Cells.Clear ' Inhalt aus allen Zellen löschen

Range("A1").Select ' Die Zelle A1 wird markiert
ActiveSheet.Paste
Range("B1").Select ' Die Zelle B1 wird markiert
End Sub

Nach dem ändern der Titelinformationen in Excel wird der Tabelleninhalt markiert und in die Zwischenablage kopiert.
Da der Befehl für das umschalten von einer Anwendung zu einer anderen Anwendung (Focus von einer Anwendung zu einer anderen Anwendung) NICHT FUNKTIONIERT, muß ich eben die Krückenlösung mit nochmaligen öffnen der xml-Datenbank mit Notepad erledigen.

MsgBox "Von " & alletitel & " zu aktualisierenden Titeln " & vbCrLf _
& "wurden " & aktualisiertetitel & " Titel aktualisiet. " & vbCrLf _
& nichtgefundentitel & " Titel wurde(n) nicht gefunden. " & vbCrLf _
& "Die nicht gefundenen Titel waren " & vbCrLf _
& fehlendetitel _


Ich mache mal wieder den Vergleich mit der Autotür.
Du rufst in der Werkstatt an, weil Dein Auto sich neuerdings nicht mehr vom 12. Stock aus öffnen lässt. Der Meister fragt, ob es denn direkt am Auto funktioniert. Du beharrst nun aber darauf, dass das aus dem 12 Stock funktionieren muss, unten wäre ja nichts anders. Du würdest unten genau so auf den Knopf am Schlüssel drücken wie oben... Mein Sohn arbeitet übrigens in einer Autowerkstatt, der kennt solche Kunden. ;-)

Anders gesagt, wenn ich Fehlersuche betreibe, würde ich schauen, welche Fehlerquellen möglich sind und diese einzeln und in einer für mich sinnvollen Reihenfolge prüfen. Wenn meine Nachttischlampe nicht geht, laufe ich nicht gleich in den Keller und prüfe die Hauptsicherung. Ich schaue erst mal, ob im Schlafzimmer die Deckenlampe geht...

Die einfachste Code-Prüfung wäre übrigens - bei schon geöffnetem Editor - den einzigen Befehl, der nicht funktioniert, einzeln zu testen

Sub Test()
AppActivate "Notepad" ' Activate Microsoft
End Sub

Aber das hast Du wahrscheinlich schon gemacht. Ich schreibe das nur sicherheitshalber - denn sicher bin ich mir da nicht - Zitat
Wozu soll ich einen kompletten, FUNKTIONIERENDEN QUELLCODE entfernen, nur weil ein einziger Befehl nicht funktioniert?

Das hatte sich ja auf den Code aus der vorhergehenden Antwort bezogen. Also auch dazu ein paar Worte - man muss ja nichts entfernen (das hatte ich auch nicht geschrieben). Du sollst einfach nur den Code testen. Den kann man im gleichen Modul wie Deinen einfügen oder ein anderes - was ich bevorzugen würde. Den kann man auch in einer anderen Datei testen.

Dass ich so was schreibe, heißt das nicht, daß Du vom programmieren nichts verstehst. Ich hatte es anderswo schon geschrieben - ich sehe von hier aus nicht, was Du machst ... Ich kann mir nur darüber Gedanken machen, was Du schreibst. Und das absolut wertfrei. Wenn ich Dich um einen Codetest bitte und Du meinst, dass Du Deinen Code entfernen musst, schreibe ich halt', dass es anders geht.

Gibt es jemanden, der die Lösung kennt, weshalb der VBA Code für den Wechsel von einer Anwendung zu einer anderen Anwendung bei meinem Excel nicht funktioniert?
Wenn ja, dann bitte um Bekanntgabe der Lösung.


Eventuell stellst Du Deine Frage in einem englischsprachigen Forum, da ist die Reichweite größer. Hier hält sich das Interesse anscheinend in Grenzen :-( Oder, wie ich auch schon schrieb, hole Dir Hilfe vor Ort.
Anzeige
AW: ...ich wollte ...
26.11.2025 18:53:05
gerry
Es gibt eine Exceldatenbank, in der alle möglichen Titelinformationen wie Interpret, Komponist, Texter, Aufnahmejahr, Produzent usw. in einem Blatt mit der Bezeichnung "liste" gespeichert sind.
Diese Titelinformationen sollen in Media Librarys (Musikdatenbanken) von verschiedenen Musikprogrammen exportiert werden.
Da jedes Wiedergabeprogramm (Virtual DJ, Creative Media Source, VLC, iTunes usw.) eine eigene Musikdatenbank besitzt, die verschiedene Informationen anzeigt, gibt es in dieser Exceldatenbank zusätzlich für jedes Musikprogramm ein eigenes Blatt, in dem die Informationen für das jeweilige Programm zusammengestellt werden.
Beispiel: Virtual DJ hat die Anzeigen von Author, Title, Album, Composer, Genre, Year, Comment, User1 und User2.
VLC hat die Anzeigen Künstler, Album, Titelnummer und Kommentare.
Daher müssen bei VirtualDJ die Infos von Produzent, Plattennummer, Plattenfirma und Titelnummer im Feld Comment angezeigt werden.
Bei VLC müssen aber die Infos von Produzent, Plattennummer, Plattenfirma, Komponist, Texter, Genre und Jahr im Feld Kommentare angezeigt werden. Im Gegensatz zu VirtualDJ hat VLC ein Feld für Titelnummer - daher muß diese Info bei VLC nicht in Kommentare angezeigt werden.
VLC hat die Eigenheit, daß der Speicherort mit %20 statt mit Leerzeichen verarbeitet wird.

Aus diesem Grund gibt es natürlich für jedes Musikprogramm ein eigenes Makro für die Suche vom Datensatz und für die Feldbefüllung der Titelinfos.

Da sicherlich keiner der Spezialisten mit Mustertabellen und Quellcode überschüttet werden will, der mit dem eigentlichen Problem absolut nichts zu tun hat, habe ich die Datenbank mit den Musikinfos und den die Macros mit den Quellcodes für Titelsuche und Feldbefüllung nicht hochgeladen.

Die für das Problem relevanten Macros Musikdatenbank mit Notepad öffnen, Daten markieren und Inhalt in leeres Tabelblatt von Excel einfüllen,
plus das zweite Macro mit Focus von Excel auf Notepad (von Exceltabelle auf Notepad umschalten) und den aktualisierten Inhalt von Excel in Notepad einfügen habe ich sehr wohl ungekürzt hochgeladen.

Und ja, ich habe den nicht funktionierenden Befehl mehrfach alleine getestet - sowohl selbst eingetippt als auch aus Mustervorlagen kopiert.
Immer der selbe Fehler Nr. 5.
Und ja, es stimmt, man muß auch das Umfeld kennen. Daher habe ich nicht nur den Befehl erwähnt, der bei mir nicht funktioniert, sondern das komplette Macro, wo dieser Befehl verwendet wird. Ich habe selbst 10 Jahre Aufzugssteuerungen überprüft und 3 Jahre Hotlinesupport hinter mir.
Um auch eventuell wichtige Infos bekanntzugeben, die ich nicht beachtet habe, die aber für die Fehlerfindung wichtig sind, habe ich das zweite Macro, in dem Notepad angesprochen wird, auch veröffentlicht.
In allen anderen Macros wird Notepad nicht erwähnt.

Die Variablen definiere ich alle im Abschnitt Deklarationen.
Daher fehlen diese Befehle in den von mir geposteten Macros.

Gerry
Anzeige
AW: ...ich wollte ...
26.11.2025 20:32:13
schauan
hier wäre jetzt noch das Video ...

https://www.herber.de/bbs/user/179716.zip
geht nur etwas schnell, aber wie man sieht, ist Excel und der VBA - Editor im Vordergrund und am Ende der Editor mit der geöffneten xml ...

Dadurch ist man eigentlich an einem Punkt, wie ich schon schrieb, wo man sich die Sache vor Ort anschauen müsste.



Anzeige
AW: ...das wollte ...
25.11.2025 15:35:44
schauan
Hast Du das erst mal so gemacht wie ich es im Code geschrieben habe? Wäre ja sicher nicht verkehrt, zu erfahren, ob der Teil klappt...
AW: ...und was ...
24.11.2025 20:38:58
gerry
Laut https://learn.microsoft.com/de-de/office/vba/language/reference/user-interface-help/appactivate-statement

Dim MyAppID, ReturnValue
AppActivate "Microsoft Word" ' Activate Microsoft
' Word.

Da ich den Focus von Excel auf die mit Notepad geöffnete XML-Datei ändern will, lautet der Befehl

Bei Verwendung von ...
AppActivate "Notepad" ' Activate Microsoft
Statt wie in der Beschreibung auf Notepad umzuschalten
Laufzeitfehler '5'
Ungültiger Prozeduraufruf oder ungültiges Argument

Bei Verwendung von ...
MyAppID = Shell("Notepad", 1) ' Run Notepad.
AppActivate MyAppID ' Activate Microsoft
wird Notepad zusätzlich neu gestartet und es wird NICHT der Focus auf das schon geöffnete Notepad gesetzt
Es steht ja auch RUN und nicht FOCUS in der Bemerkung

Bei Verwendung von
ReturnValue = Shell("Notepad",1) ' Run Notepad.
AppActivate ReturnValue ' Activate Microsoft
wird Notepad zusätzlich neu gestartet und es wird NICHT der Focus auf das schon geöffnete Notepad gesetzt
Es steht ja auch RUN und nicht FOCUS in der Bemerkung


Anzeige
AW: ...und was ...
24.11.2025 20:45:12
schauan
Du kannst doch Notepad einfach nochmal öffnen und dort dann alles reinkopieren ... Ansonsten, wenn Du Notepad verlässt, geht das ggf. in Richtung API-Programmierung und wird deutlich komplexer.
AW: ... warte mal ....
24.11.2025 18:04:31
schauan
... Du kannst im Notepad eher keine einzelne Daten ersetzen. Wenn Du in Zeile 4711 "Echt Köllnisch Wasser" eintragen willst, müsstest Du diese ja auch konkret anwählen können ...

Ansonsten,

Mit dem Befehl sollte die Umschaltung ausgeführt werden. Das funktioniert bei mir jedoch nicht


ist eventuell das Öffnen von Notepad etwas langsam.
Füge also davor folgende Zeile ein:

Application.Wait Now + TimeValue("00:00:02")

und eventuell zu weiteren Sendkeys ebenfalls kurze Wartezeiten. Mach aber in der Zeit nix, - zumindest nicht am Rechner, Kaffee trinken geht schon ;-)
Die SendKeys gehen an die aktive Anwendung und wenn Du wechselst ....

Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige