Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Werte in anderes Programm kopieren

Werte in anderes Programm kopieren
04.09.2015 18:07:59
Barbara
Hallo
ich würde gerne Folgendes per Makro tun:
Die Werte A1 bis A10 in ein anderes Fenster eines anderen Programms so einfügen:
A1 in die Zwischenbalage
Das andere Programm aktivieren (ist ein offenes Fenster neben Excel)
STRG+V
STRG ohne was dazu (oder Enter)
kurze Pause
Dann A2 in die Zwischenbalage und das Ganze ochmals, bis alles rübergeschaufelt ist.
Doch zuerst muss irgendwie dieses offene Fenster bestimmt werden.
Würde mich über konkrete Vorschläge freuen.
LG,
Barbara

Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Werte in anderes Programm kopieren
04.09.2015 22:27:57
Sebastel
Hallo Barbara,
Du willst Daten aus Excel in ein "anderes Programm" übertragen und das per Makro.
Fragen dazu:
Was ist denn Dein "anderes Programm", ist es VBA-fähig?
Warum zeilenweise und nicht als Inhalt einer Markierung mehrerer Zeilen und Spalten?
Beschreibe doch einfach mal, was Du denn vorhast.
Gruß Sebastel

Anzeige
AW: Werte in anderes Programm kopieren
04.09.2015 22:54:14
Barbara
Hallo Sebastel,
dieses andere Programm hat kein VBA oder so was, aber zehn Eingabefelder, wo ich jetzt händisch den Inhalt von A1 rein kopiere, dann mit einer bestimmten Taste in das nächste Eingabefeld gehe, B1 einfüge usw.
Dieser händische Vorgang soll eben automatisiert werden.
Habe was über sendKeys gelesen, aber mir fehlt es an Hintergrundwissen. Vor allem, wie man das andere Fenster aktivieren kann. Wahrscheinlich geht das sogar mit Strg+Tab. So wechselt man in Windows zum vorigen Fenster.
LG,
Barbara

Anzeige
AW: Werte in anderes Programm kopieren
05.09.2015 15:48:45
JoWE
Hallo Barbara,
so ganz einfach ist es wirklich nicht, die aktiven Fenster abzufragen und dann Daten an ein externes und auch noch an das richtige Fenster zu senden. Hier zwei Lesetipps:
1. http://www.activevb.de/tutorials/tut_sendkeys/sendkeys.html
2. http://www.activevb.de/tipps/vb6tipps/tipp0123.html
Viel Erfolg wünsche ich Dir.
Ich lasse die Frage offen, evtl. hat ja Sebastel noch etwas beizutragen.
Gruß
Jochen

Anzeige
AW: Werte in anderes Programm kopieren
05.09.2015 15:51:35
JoWE
So jetzt wirklich offen!
Hallo Barbara, 
so ganz einfach ist es wirklich nicht, die aktiven Fenster abzufragen und dann Daten an ein externes und auch noch an das richtige Fenster zu senden. Hier zwei Lesetipps:
1. http://www.activevb.de/tutorials/tut_sendkeys/sendkeys.html 
2. http://www.activevb.de/tipps/vb6tipps/tipp0123.html 
Viel Erfolg wünsche ich Dir.
Ich lasse die Frage offen, evtl. hat ja Sebastel noch etwas beizutragen.
Gruß
Jochen

Anzeige
AW: Werte in anderes Programm kopieren
05.09.2015 21:39:59
Barbara
Hallo Jochen,
Sehr interessanter Link.
So wie es aussieht, komme ich damit weiter.
Muss erst alles ausprobieren.
Vielen Dank.
LG,
Barbara

AW: Danke für die Rückmeldung
06.09.2015 10:34:35
JoWE

AW: Danke für die Rückmeldung
07.09.2015 20:56:22
Barbara
hallo
komme jetzt doch nicht weiter.
Folgendes Programm öffnet den Calculator und lässt ihn ausrechnen:
1+2+3+ + +100=
(habe es im Internet gefunden)
Sub a()
Dim appID As Integer
Dim Ergebnis, I
'Starten des Windows-Calculators und Auffangen der Applikation-ID
appID = Shell("notepad.EXE", 1)
'Sicherstellen dass der Calculator den Fokus hat
Application.Wait (Time + TimeValue("00:00:01"))
AppActivate appID
'berechnen der Summe der Zahlen von 1 bis 100
For I = 1 To 100
'send keys to add the values of I
SendKeys I & "{+}", True
Next I
SendKeys ("100"), True
SendKeys "=", True
End Sub
Folgende Probleme:
Wie kann ich in der Schleife überprüfen, ob der Rechner noch da ist (zur Sicherheit)?
Leider ging es nicht, erst nachdem ich
Application.Wait (Time + TimeValue("00:00:01"))
eingefügt habe.
Leider muss ich danach auf meiner Tastatur danach immer den NumLock (Zehnertastatur aktivieren) einschalten.
LG,
Barbara

Anzeige
AW: Danke für die Rückmeldung
08.09.2015 07:25:33
JoWE
Hi Barbara,
ein wenig Code und schon geht's. Kannst Du in der Schleife sooft aufrufen wie es Dir notwendig erscheint.
Code stammt von Stefan Onken:
'Im Deklarationsbereich
Private Declare Function FindWindow Lib "user32" _
Alias "FindWindowA" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
'In ein Modul
Sub FindeAnwendung()
If FindWindow(vbNullString, "Rechner") > 0 Then MsgBox "Anwendung läuft"
End Sub
Das Warten ist auch erforderlich; der Rechner muss ja erst mal korrekt "geladen" werden!
Gruß
Jochen

Anzeige
AW: Danke für die Rückmeldung
08.09.2015 07:31:14
JoWE
Hi nochmal,
die Aktivierung des NumPads soll lt. "Jens aus Siegburg" (September 2012)
so funktionieren:
 ' zunächst die benötigte API-Funktion
Public Declare Function GetKeyState Lib "user32" ( _
ByVal nVirtKey As Long) As Integer
Private Declare Sub keybd_event Lib "user32" ( _
ByVal bVk As Byte, _
ByVal bScan As Byte, _
ByVal dwFlags As Long, _
ByVal dwExtraInfo As Long)
Private Const VK_NUMLOCK = &H90
Private Const KEYEVENTF_KEYUP = &H2
Sub NumPress()
' NUM-Lock aktivieren (falls deaktiviert)
If Not (GetKeyState(vbKeyNumlock) = 1) Then
keybd_event VK_NUMLOCK, 1, 0, 0
keybd_event VK_NUMLOCK, 1, KEYEVENTF_KEYUP, 0
End If
End Sub 
Hab's nicht getestet. Hab's noch nie benötigt :-)
Gruß
Jochen
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Werte aus Excel in andere Programme kopieren


Schritt-für-Schritt-Anleitung

Um Werte aus Excel in ein anderes Programm zu kopieren, kannst Du ein Makro verwenden, das die Daten automatisiert überträgt. Hier ein einfaches Beispiel, das Du anpassen kannst:

Sub WerteKopieren()
    Dim appID As Long
    Dim i As Integer
    Dim wert As String

    ' Aktiviere das andere Programm (hier Notepad als Beispiel)
    appID = Shell("notepad.exe", vbNormalFocus)
    Application.Wait (Now + TimeValue("0:00:01")) ' Warten, bis das Programm geladen ist
    AppActivate appID

    ' Kopiere Werte von A1 bis A10
    For i = 1 To 10
        wert = Cells(i, 1).Value ' Wert aus der ersten Spalte
        Clipboard.Clear ' Leere die Zwischenablage
        Clipboard.SetText wert ' Setze den Wert in die Zwischenablage
        SendKeys "^v" ' STRG+V, um den Wert einzufügen
        SendKeys "{TAB}" ' Wechsle zum nächsten Eingabefeld
        Application.Wait (Now + TimeValue("0:00:01")) ' Kurze Pause
    Next i
End Sub

Hierbei werden die Werte von A1 bis A10 in das aktive Fenster des anderen Programms eingefügt. Achte darauf, dass Du das Programm, in das Du kopierst, bereits geöffnet hast.


Häufige Fehler und Lösungen

  • Problem: Das andere Programm wird nicht aktiviert.

    • Lösung: Stelle sicher, dass der Name des Programms korrekt in Shell angegeben ist und dass es bereits geöffnet ist.
  • Problem: Die SendKeys-Funktion funktioniert nicht wie erwartet.

    • Lösung: Überprüfe, ob das Zielprogramm den Fokus hat. Möglicherweise musst Du AppActivate vor der Verwendung von SendKeys aufrufen.

Alternative Methoden

Wenn Du ein Excel-Makro auf einem anderen PC kopieren möchtest, kannst Du die .xlsm Datei einfach auf den Ziel-PC übertragen. Du kannst auch die VBA-Module exportieren und importieren, um das Makro in ein anderes Excel-Programm zu übertragen.

Eine weitere Methode besteht darin, die Daten zunächst in eine CSV-Datei zu exportieren und diese dann in das andere Programm zu importieren.


Praktische Beispiele

Hier ein Beispiel für die Nutzung von SendKeys, um Werte zu übertragen:

Sub WerteUebertragen()
    Dim i As Integer
    For i = 1 To 10
        ' Wert kopieren
        Cells(i, 1).Copy
        ' STRG+V für Einfügen
        SendKeys "^v"
        ' Wechsel zum nächsten Eingabefeld
        SendKeys "{TAB}"
        Application.Wait (Now + TimeValue("0:00:01"))
    Next i
End Sub

Dieses Makro kopiert die Werte von A1 bis A10 und fügt sie in das aktuell aktive Fenster ein.


Tipps für Profis

  • Um die Effizienz zu erhöhen, teste verschiedene Wartezeiten zwischen den SendKeys-Befehlen. Je nach Programm kann eine längere oder kürzere Pause erforderlich sein.
  • Falls Du regelmäßig mit mehreren Programmen arbeitest, kannst Du ein umfangreicheres Makro erstellen, das die Fensterwechsel automatisiert.
  • Nutze die Windows API-Funktionen, um die Kontrolle über Fenster zu verbessern und sicherzustellen, dass das richtige Fenster aktiv ist.

FAQ: Häufige Fragen

1. Wie kann ich überprüfen, ob das andere Programm noch läuft?
Du kannst die Windows-API verwenden, um zu prüfen, ob das Fenster des anderen Programms aktiv ist. Siehe den Beispielcode von Jochen zur Verwendung der FindWindow-Funktion.

2. Was ist Excel für ein Programm?
Excel ist ein Tabellenkalkulationsprogramm, das Teil der Microsoft Office Suite ist. Es ermöglicht die Durchführung von Berechnungen, Datenanalysen und das Erstellen von Diagrammen.

3. Wie kann ich ein Makro in ein anderes Excel-Programm kopieren?
Du kannst das Makro in der VBA-Entwicklungsumgebung exportieren und in das Ziel-Excel-Programm wieder importieren.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige