Herbers Excel-Forum - das Archiv

Werte kopieren

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: Werte kopieren
von: Heinz H

Geschrieben am: 31.12.2006 09:57:19
Guten morgen Leute
Ich habe im Pfad "I:\Test\PA's - nach SAP-Nummer"
lauter Tab.Blätter mit SAP Nummern. ZB. 19022.xls,22077.xls usw.Also immer 5 stellige Nummern.
Nun möchte ich einige Werte in die Arbeitsmappe "Gewichtsblätter & Wochenumbau.xls" Sheets "Artikeln" einfügen.
Also zB.von 19022 D8 in "Gewichtsblätter & Wochenumbau.xls" Sheets "Artikeln" Spalte A .. von D11 in Spalte B usw.
Immer in die erste leere Spalte A im Sheets "Artikeln".
Könnte man Eingabefeld oder so ähnlich erstellen,wo ich die 5 stellige Nummer eingebe der mir dann die Werte kopiert.
Eventuell mit einer Abfrage, wenn die Nummer schon in Spalte A existiert.
Könnte mir Bitte dabei jemand helfen ??
Danke & Gruß Heinz
Bild

Betrifft: AW: Werte kopieren
von: Herby

Geschrieben am: 31.12.2006 12:51:41
Hallo Heinz,
das Makro soll aus verschiedenen Mappen (z.B. 33344.xls) die sich in einem bestimmten Verzeichnis befinden und nur aus einem Tabellenblatt bestehen (=Tabelle1) bestimmte Zellen auslesen.
Der Dateiname und die Zelladresse wird über eine Eingabebox erfasst (z.B. 33344 D5) dh. Dateiname = 33344 und die Zelladresse, die ausgelesen werden soll ist D5.
Der ausgelesene Wert (das Ergebnis also) soll in die aktuelle Mappe übernommen werden und zwar immer in die Spalte A und dort in die nächste leere Zeile (also immer untereinander).
Habe ich Dich so richtig verstanden ?
Das Auslesen funktioniert problemlos mit untenstehendem Makro, nur bin ich nicht sicher wohin das Ergebnis kopiert werden soll bzw. was dabei berücksichtigt werden soll ?
Viele Grüße
Herby
Private Sub CommandButton1_Click()
Dim strErgebnis As String
Dim strPfad As String, strDatei As String, strPfadDatei As String
Dim ZelleA As String, ZelleR As String
Dim strSource As String
' oder ActiveWorkbook.Path
strErgebnis = InputBox("Geben Sie die Nr. ein:", "SAP-Nummern", "33344 B2")
strPfad = ThisWorkbook.Path & "\"
strDatei = Left(strErgebnis, 5) & ".xls"
strPfadDatei = strPfad & strDatei
If strErgebnis = "" Then
MsgBox " Sie haben keinen Wert eingegeben !"
Exit Sub
ElseIf Dir(strPfadDatei) = "" Then
MsgBox strPfadDatei
MsgBox "der eingegebene Wert " & strPfadDatei & " entspricht keinem Dateinamen im Verzeichnis !"
Exit Sub
End If
' Zelle berechnen
ZelleA = Mid(strErgebnis, 6)
ZelleR = Range(ZelleA).Address(ReferenceStyle:=xlR1C1)
MsgBox ZelleR
'Dim i As Integer
'i = 2
'strSource = "'" & strPfad & "[" & strDatei & "]Tabelle1'!R2C" & i & ""
strSource = "'" & strPfad & "[" & strDatei & "]Tabelle1'!" & ZelleR & ""
MsgBox strSource
MsgBox xl4Value(strSource)
'Range("A" & i - 4).Value = xl4Value(strSource) 'zurückschreiben
Range("A4").Value = xl4Value(strSource) 'zurückschreiben
End Sub

Function xl4Value(strParam As String) As Variant
xl4Value = ExecuteExcel4Macro(strParam)
End Function
Bild

Betrifft: AW: Werte kopieren
von: Heinz H

Geschrieben am: 31.12.2006 13:50:55
Hallo Herby
Schön das Du mir WIEDER Hilfst.
Bin jetzt in der Arbeit,bis 21:00 Uhr.
Werde es später testen.
Aber Du hast mich richtig verstanden.
Melde mich in ca. 1,5 Stunden.
Einstweilen recht herzlichen Dank.
Gruß Heinz
Bild

Betrifft: AW: Werte kopieren
von: Heinz H

Geschrieben am: 31.12.2006 14:44:36
Hallo Herby
Sieht sehr gut aus.
Nur Bitte der Pfad zum einlesen der Daten ist nicht auf C:\ sondern auf "T:\Qs\Allgm.Lesen\PA's - nach SAP-Nummer"
Also nicht im selben Verzeichnis.
Pogramm zum einlesen ist auf C:
Könntest Du mir Bitte dabei nochmals helfen.
Gruß Heinz
Bild

Betrifft: AW: Werte kopieren
von: Herby

Geschrieben am: 31.12.2006 14:56:50
Hallo Heinz,
freut mich, dass es soweit funktioniert. Den Pfad habe ich angepasst.
Vielleicht kannst Du mir noch sagen, wohin die Werte geschrieben werden sollen ?
(vgl. mein 1. Posting).
Private Sub CommandButton1_Click()
Dim strErgebnis As String
Dim strPfad As String, strDatei As String, strPfadDatei As String
Dim ZelleA As String, ZelleR As String
Dim strSource As String
' oder ActiveWorkbook.Path
strErgebnis = InputBox("Geben Sie die Nr. ein:", "SAP-Nummern", "33344 B2")
'strPfad = ThisWorkbook.Path & "\"
strPfad = "T:\Qs\Allgm.Lesen\PA's - nach SAP-Nummer"
strDatei = Left(strErgebnis, 5) & ".xls"
strPfadDatei = strPfad & strDatei
If strErgebnis = "" Then
MsgBox " Sie haben keinen Wert eingegeben !"
Exit Sub
ElseIf Dir(strPfadDatei) = "" Then
MsgBox strPfadDatei
MsgBox "der eingegebene Wert " & strPfadDatei & " entspricht keinem Dateinamen im Verzeichnis !"
Exit Sub
End If
' Zelle berechnen
ZelleA = Mid(strErgebnis, 6)
ZelleR = Range(ZelleA).Address(ReferenceStyle:=xlR1C1)
MsgBox ZelleR
'Dim i As Integer
'i = 2
'strSource = "'" & strPfad & "[" & strDatei & "]Tabelle1'!R2C" & i & ""
strSource = "'" & strPfad & "[" & strDatei & "]Tabelle1'!" & ZelleR & ""
MsgBox strSource
MsgBox xl4Value(strSource)
'Range("A" & i - 4).Value = xl4Value(strSource) 'zurückschreiben
Range("A4").Value = xl4Value(strSource) 'zurückschreiben
End Sub

Viele Grüße
Herby
Bild

Betrifft: Backslasch noch einfügen
von: Herby
Geschrieben am: 31.12.2006 15:02:46
Hallo Heinz,
ich habe vergessen den Backslash vom Pfad noch einzufügen. So ist die Zeile richtig:
strPfad = "T:\Qs\Allgm.Lesen\PA's - nach SAP-Nummer" & "\"
Viele Grüße
Herby
Bild

Betrifft: AW: Backslasch noch einfügen
von: Heinz H

Geschrieben am: 31.12.2006 15:28:10
Hallo Herby
Habe den Pfad jetzt richtig angelegt. ABER jetzt kommt die
MsgBox "der eingegebene Wert " & strPfadDatei & " entspricht keinem Dateinamen im Verzeichnis !"
Nochmals zu Erklärung im Verzeichnis
strPfad = "T:\Qs\Allgm.Lesen\PA's - nach SAP-Nummer" & "\"
liegen die Tab.Blätter mit den Namen 12518,21347 usw.
Nun sollte von Deinem Code den habe ich im Tab.Blatt "Artikeln"
die Datei geöffnet werden.
Die Werte von
Zelle D8 in "Artikeln" Spalte A
Zelle D11 in "Artikeln Spalte B
Zelle L6 in "Artikeln" Spalte E
Zelle L8 in "Artikeln" Spalte F
eingetragen werden.
Ich hoffe das ich mich ein wenig Verständlicher ausgedrückt habe.
Danke,Heinz
Bild

Betrifft: AW: Backslasch noch einfügen
von: Herby

Geschrieben am: 31.12.2006 16:14:58
Hallo Heinz,
die von mir verwendete Technik (xl4makro) hat Probleme mit Deinem Verzeichnis und zwar mit dem Apostroph von PA's. Kannst Du das Apostroph gegen ein anderes Zeichen austauschen ober löschen ?
Wenn Du es austauscht, dann auch im Makro das Verzeichnis entsprechend anpassen.
Dann müsste es m.E. funktionieren.
Als Dateiname werden die ersten 5 Ziffern Deiner Eingabe genommen. Diese werden dann mit den vorhandenen Dateinamen verglichen.
strPfad = "T:\Qs\Allgm.Lesen\PA's - nach SAP-Nummer" & "\"
strPfad = "T:\Qs\Allgm.Lesen\PA_s - nach SAP-Nummer" & "\"
Zum 2. Teil noch eine Nachfrage. Der 1.Wert aus der 1. Datei (Zelle D8 wird in die Spalte A kopiert (in welche Zeile ?). Der 1. Wert aus der 2. Datei (Zelle wieder D8) wird dann ebenfalls in die Spalte A kopiert und zwar eine Zelle unterhalb des 1. Wertes.
Ist das so o.k. ?
viele Grüße
Herby
Bild

Betrifft: AW: Backslasch noch einfügen
von: Heinz H

Geschrieben am: 31.12.2006 16:36:20
Hallo Herby
Frage 1:
Der 1.Wert aus der 1. Datei (Zelle D8 wird in die Spalte A kopiert (in welche Zeile ?).
In die erste Zeile wo A frei ist.
Zb. A552 = 12345
A553 = 23456
A554 = frei
Dann
A554 = D8
B554 = D11
E554 = L6
F554 = L8
Danke, Heinz
Bild

Betrifft: Komplettes Makro
von: Herby

Geschrieben am: 31.12.2006 17:04:23
Hallo Heinz,
anbei das komplette Makro:
Gehört in den SteuerelementeButton im Tabellenblatt "Artikeln":
Ich hab noch eine Kleinigkeit gegenüber den bisherigen Makro geändert.
Private Sub CommandButton1_Click()
Dim strErgebnis As String
Dim strPfad As String, strDatei As String, strPfadDatei As String
Dim ZelleA As String, ZelleR As String
Dim strSource As String
Dim LetzteZeile
' oder ActiveWorkbook.Path
strErgebnis = InputBox("Geben Sie die Nr. ein:", "SAP-Nummern", "33344 B2")
'strPfad = ThisWorkbook.Path & "\"
strPfad = "T:\Qs\Allgm.Lesen\PAs - nach SAP-Nummer" & "\"
strDatei = Left(strErgebnis, 5) & ".xls"
strPfadDatei = strPfad & strDatei
If strErgebnis = "" Then
MsgBox " Sie haben keinen Wert eingegeben !"
Exit Sub
ElseIf Dir(strPfadDatei) = "" Then
'  MsgBox strPfadDatei
MsgBox "der eingegebene Wert " & strPfadDatei & " entspricht keinem Dateinamen im Verzeichnis !"
Exit Sub
End If
' Zelle berechnen
ZelleA = Mid(strErgebnis, 7)
ZelleR = Range(ZelleA).Address(ReferenceStyle:=xlR1C1)
strSource = "'" & strPfad & "[" & strDatei & "]Tabelle1'!" & ZelleR & ""
' Werte in Tab Artikeln eintragen
Select Case UCase(ZelleA)
Case "D8"
LetzteZeile = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1
Range("A" & LetzteZeile).Value = xl4Value(strSource) 'zurückschreiben
Case "D11"
LetzteZeile = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row + 1
Range("B" & LetzteZeile).Value = xl4Value(strSource) 'zurückschreiben
Case "L6"
LetzteZeile = ActiveSheet.Cells(Rows.Count, 5).End(xlUp).Row + 1
Range("E" & LetzteZeile).Value = xl4Value(strSource) 'zurückschreiben
Case "L8"
LetzteZeile = ActiveSheet.Cells(Rows.Count, 6).End(xlUp).Row + 1
Range("F" & LetzteZeile).Value = xl4Value(strSource) 'zurückschreiben
Case Else
MsgBox "Die Eingabe der Zelle " & ZelleA & " kann nicht zugeordnet werden !"
End Select
End Sub

und die Funktion für das Auslesen der geschlossenen Datein
Gehört in ein Modul:
Function xl4Value(strParam As String) As Variant
xl4Value = ExecuteExcel4Macro(strParam)
End Function
Viele Grüße
Herby
Bild

Betrifft: AW: Komplettes Makro
von: Heinz H

Geschrieben am: 31.12.2006 17:19:47
Hallo Herby
Recht herzlichen DANK für Deine Bemühungen.
Kann Dein Markro erst am abend testen,bin schließlich in der Arbeit.
ABER mein Vertrauen ist Grenzenlos zu Dir.
Wünsche Dir und Deiner Familie ein gutes neues Jahr .
Bis zum nächsten mal.
Danke & Gruß Heinz
Bild

Betrifft: AW: Komplettes Makro
von: Herby

Geschrieben am: 31.12.2006 17:59:54
Hallo Heinz,
derzeit liest das Makro immer nur eine einzige Zelle aus, nämlich die, die Du in die Eingabemaske eingibst. Aufgrund Deiner Antworten weiss ich nicht mehr ob das so richtig ist. Vielmehr denke ich, dass je Datei die Werte aus den Zellen D8/D11/L6 und L8 eingelesen werden sollen ?
Ich wünsche Dir und Deiner Familie ebenfalls ein gutes neues Jahr. Viel Glück !
Herby
Bild

Betrifft: AW: Komplettes Makro
von: Heinz H

Geschrieben am: 01.01.2007 10:40:42
DANK an Herby
Hat mir sehr weitergeholfen.
Gruß Heinz
 Bild
Excel-Beispiele zum Thema "Werte kopieren"
Blätter in andere Arbeitsmappen kopieren Module von Mappe zu Mappe kopieren
Arbeitsblatt 40 mal kopieren Schriftgröße beim Kopieren verdoppeln
Beim Kopieren auch die Zeilenhöhe und Spaltenbreite übernehmen Tabellencode nach Kopieren des Blattes löschen
Arbeitsmappe blitzschnell kopieren VBE-Namen der Blattmodule beim Kopieren festlegen
Blattinhalt von einer zur anderen Arbeitsmappe kopieren Formel bis zur letzten Zeile der Nebenspalte kopieren