Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1392to1396
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Import von Exceldatei in Exceldatei
29.11.2014 14:38:34
Exceldatei
Hallo,
ich möchte eine Excel-Datei in eine andere Excel-Datei importieren. Dafür habe ich einen Code den ich für eine andere Programmierung erfolgreich verwendet habe. In meinem neuen Projekt benötige ich den Import allerdings differenzierter:
-Die Daten sollen unter die letzte verwendete Zeile eingetragen werden.
-Die Daten sollen als Werte ohne Formeln übernommen werden
-Es sollen nur die Spalten B–H und J-N importiert werden und zwar auch nur, wenn da auch Daten drin stehen, also keine leeren Zeilen. In der zu importierenden Datei steht in Spalte B immer etwas drin, wenn dort Daten eingetragen werden. Vielleicht könnte man über eine If-Anfrage in Spalte B rausfinden, ob das was drin steht und diese Zeile dann importieren. Leere Zeilen sollen ignoriert werden.
Ich habe anhand meines Codes versucht das selber zu programmieren. Aber ich schaffe es nicht einmal, die importierten Daten unter die letze verwende Zeile zu übertragen. Die Code läuft bis zu öffnen der Importdatei und danach passiert nichts weiter. Es kommt nicht einmal eine Fehlermeldung.
Ich würde mich freuen, wenn mir jemand helfen könnte. Vielen Dank im Voraus.
Anja
Anbei mein Code:
Private Sub CommandButton2_Click()
Application.ScreenUpdating = False
Dim Quelle As Object, Ziel As Object
Dim Datei As String
Dim letzteZeile As Long
On Error GoTo Fehler
'Dialog "Datei öffnen" anzeigen
Datei = Application.GetOpenFilename("Excel Dateien (*.xls; *.xlsx)," & _
"*.xls; *.xlsx")
'Abbrechen falls keine Datei ausgewählt
If Datei = "Falsch" Then
MsgBox "keine Datei ausgewählt", , "Abbruch"
Exit Sub
End If
'MsgBox "Ausgewählte Datei: " & Datei, , ""
'Ausgewählte Datei öffnen
Workbooks.Open Filename:=Datei
Set Quelle = ActiveWorkbook.Worksheets(1)
Set Ziel = ThisWorkbook.Worksheets(2)
letzteZeile = ThisWorkbook.Worksheets(2).[A65536].End(xlUp).Row + 1
'kopieren und einfügen
Quelle.UsedRange.Copy Ziel.Cells(letzteZeile, 1)
ActiveWorkbook.Close
Application.ScreenUpdating = True
'Speicher freigeben
Set Quelle = Nothing
Set Ziel = Nothing
Exit Sub
Fehler:
Set Quelle = Nothing
Set Ziel = Nothing
MsgBox "FehlerNr.: " & Err.Number & vbNewLine & vbNewLine _
& "Beschreibung: " & Err.Description _
, vbCritical, "Fehler"
Application.ScreenUpdating = True

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Import von Exceldatei in Exceldatei
29.11.2014 14:46:33
Exceldatei
Hallo,
habe noch was vergessen. Die Zeilen B-H und J-N aus der Importdatei, sollen in ebenfalls in Spalte B-H und J-N importiert werden.
Gruß
Anja

AW: Import von Exceldatei in Exceldatei
01.12.2014 17:20:41
Exceldatei
Hallo Anja,
unter letzteZeile = ThisWorkbook.Worksheets(2).[A65536].End(xlUp).Row + 1 das hier einfügen:
lZQ = ActiveWorkbook.Worksheets(1).[B65536].End(xlUp).Row
for i=1 to lZQ
if not Quelle.cells(i,2).value="" then
for j=2 to 8
Ziel(letzteZeile,j).value=Quelle(i,j).value
next
for j= 10 to 14
Ziel(letzteZeile,j).value=Quelle(i,j).value
next
letzteZeile=letzteZeile+1
end if
next

Löschen von 'kopieren und einfügen
Quelle.UsedRange.Copy Ziel.Cells(letzteZeile, 1)

Falls die Daten erst ab Zeile 2 beginnen (wegen Überschriften in der ersten Zeile)dann hier
for i=1 to lZQ
das hier
for i=2 to lZQ

schreiben.
Grüsse,
Frank

Anzeige
AW: Import von Exceldatei in Exceldatei
02.12.2014 04:19:14
Exceldatei
Hallo Frank,
danke für Deine Antwort.
Leider klappt das irgendwie nicht. Vielleicht habe ich den Code falsch eingefügt?
Die Fehlermeldung lautet:
FehlerNr.:-214735265
Beschreibung bezieht sich auf Werte jenseits des Listenendes.

Danach wird die Importdatei geöffnet und das war es.
Habe ich es richtig verstanden, dass ich das hier löschen soll?
'kopieren und einfügen

Quelle.UsedRange.Copy Ziel.Cells(letzteZeile, 1)
Ich hatte es auskommentiert. Wenn ich die Kommentierung wieder aufhebe, kommt keine Fehlermeldung, aber es passiert nichts.
Ich lege Dir den geänderten Code noch einmal bei, damit Du sehen kannst was ich gemacht habe.
Es wäre lieb, wenn Du noch einmal einen Blick darauf wirfst und mir sagen könntest, warum es schief läuft. Vielen Dank.
Gruß
Anja
Private Sub CommandButton3_Click()
Application.ScreenUpdating = False
Dim Quelle As Object, Ziel As Object
Dim Datei As String
Dim letzteZeile As Long
On Error GoTo Fehler
'Dialog "Datei öffnen" anzeigen
Datei = Application.GetOpenFilename("Excel Dateien (*.xls; *.xlsx)," & _
"*.xls; *.xlsx")
'Abbrechen falls keine Datei ausgewählt
If Datei = "Falsch" Then
MsgBox "keine Datei ausgewählt", , "Abbruch"
Exit Sub
End If
'MsgBox "Ausgewählte Datei: " & Datei, , ""
'Ausgewählte Datei öffnen
Workbooks.Open Filename:=Datei
Set Quelle = ActiveWorkbook.Worksheets(1)
Set Ziel = ThisWorkbook.Worksheets(2)
letzteZeile = ThisWorkbook.Worksheets(2).[A65536].End(xlUp).Row + 1
lZQ = ActiveWorkbook.Worksheets(1).[B65536].End(xlUp).Row
For i = 1 To lZQ
'For i = 2 To lZQ
If Not Quelle.Cells(i, 2).Value = "" Then
For j = 2 To 8
Ziel(letzteZeile, j).Value = Quelle(i, j).Value
Next
For j = 10 To 14
Ziel(letzteZeile, j).Value = Quelle(i, j).Value
Next
letzteZeile = letzteZeile + 1
End If
Next
'kopieren und einfügen
Quelle.UsedRange.Copy Ziel.Cells(letzteZeile, 1)
ActiveWorkbook.Close
Application.ScreenUpdating = True
'Speicher freigeben
Set Quelle = Nothing
Set Ziel = Nothing
Exit Sub
Fehler:
Set Quelle = Nothing
Set Ziel = Nothing
MsgBox "FehlerNr.: " & Err.Number & vbNewLine & vbNewLine _
& "Beschreibung: " & Err.Description _
, vbCritical, "Fehler"
Application.ScreenUpdating = True
End Sub

Anzeige
Fehlermeldung
02.12.2014 19:18:12
Frank
Hallo Anja,
ohne die Schleifen testen zu können, weil Beispieldaten fehlen, kann ich nur prüfen, ob der Code bis zur Festlegung von 'letzteZeile' und 'lZQ' funktioniert. Und das tut er bei mir.
Hilfreich zur Fehlerlokalisierung wäre (neben Beispieldaten), zu wissen, in welcher Zeile der Fehler auftritt. Dazu müsstest Du in der Dialogbox der Fehlermeldung auf 'Debuggen' drücken, statt auf 'Beenden'. Dann sollte sich der VBA-Editor öffnen und eine Zeile des Codes gelb markiert sein. Die wäre wichtig.
Grüsse,
Frank

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige