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

Daten aus einer anderen xls Datei importieren

Daten aus einer anderen xls Datei importieren
08.11.2008 13:02:47
Michi
Hallo,
Ich suche eine VBA lösung (am besten als Macro) für folgende Aufgabe:
Es soll ein ein Report erstellt werden der wie folgt ausschauen soll (Daten (PO nummer + einzelne Summe)n kommen aus einer externen Datei):
Woche1
Datainut PO1234 500 Euro
Lager PM PO23456 800 Euro
usw. (innsgesamt ca 5 Bereiche).
Die Daten hierzu soll sich das script aus der Datei (wäre super wenn ein Auswahlfenster aufgehen würde wo man sich die Datei aussuchen könnte) "Zeiterfassung" (siehe Anhang) nehmen: Blatt "GRE" mit den Feldern: F6, F12, F18, F24 usw. und H6, H12, H18, H24.
Ich habe nun folgenden Code gefunden und bräuchte nun Hilfe um ihn entsprechend anzupassen:
Private Sub CommandButton1_Click()
'Prozedur für den Datenimport
Dim dateiname As String
Dim datei As Object
dateiname = Application.GetOpenFilename("Excel Datei, *.xls") 'Datei auswählen
If dateiname = "Falsch" Then Exit Sub ' bei Abbruch
Application.ScreenUpdating = False
datei.Sheets(1).Range("N6:P16").Copy Destination:=ThisWorkbook.Sheets("NSA").Range("E5:G15")
datei.Close 'datei schließen
Application.ScreenUpdating = True
MsgBox ("Daten wurden übertragen") 'Meldung machen
EndSUb
Wie implementiere/verändere ich in diesen Code nun folgende Dinge:
-Range so verändern, dass er alle Datainut, Lager PM usw Werte raussucht und jewils addiert (spriche Summe aller Datainput usw.) und erst dann in die destiantion einfügt.
- destination so verändere, dass er die Daten in das Blatt "Auswertung" kopiert und zwar immer paar Zeilen unter dem letzten Eintrag. Es sollte wie folgt ausschauen:
Woche 1
Datainut PO1234 500 Euro
Lager PM PO23456 800 Euro
Woche 2
Datainut PO1234 700 Euro
Lager PM PO23456 400 Euro
Das Excelfile ist unter der unten angegebenen Adresse verfügbar:
michi22.mi.funpic.de/bilder/Zeiterfassung.xls
mfg
Michi

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten aus einer anderen xls Datei importieren
10.11.2008 13:49:26
fcs
Hallo Michi,
Ich hab deine Prozedur mal angepasst und ergänzt, so dass die gewünschten Einträge und Berechnungen erfolgen.
Gruß
Franz

Option Explicit
Private lngZeileZiel As Long
Private wksZiel As Worksheet
Private wksQuelle As Worksheet
Private Sub CommandButton1_Click()
'Prozedur für den Datenimport
Dim dateiname As String
Dim datei As Workbook
Dim varEingabe As Variant, varName As Variant
'dateinamen der datendatei im Dialog auswählen
dateiname = Application.GetOpenFilename("Excel Datei, *.xls") 'Datei auswählen
If dateiname = "Falsch" Then Exit Sub ' bei Abbruch
'Zieltabelle in aktiver Arbeitsmappe setzen
Set wksZiel = ActiveWorkbook.Worksheets("Auswertung")
With wksZiel
varEingabe = Application.InputBox(Prompt:="Bitte Überschrift für Woche eingeben", _
Title:="Wochenwerte einlesen", _
Default:="Woche XX", Type:=2)
If varEingabe = False Then
Exit Sub
Else
'Zeile unterhalb letztem Eintrag für Einträge festlegen
lngZeileZiel = .Cells(.Rows.Count, 1).End(xlUp).Row + 3 '3 bestimmt Anzahl Leerzeilen zur  _
Vor-Woche
'Wochentitel eintragen in Spalte 1
.Cells(lngZeileZiel, 1) = varEingabe
End If
End With
Application.ScreenUpdating = False
'ausgewählte datei öffnen
Set datei = Application.Workbooks.Open(Filename:=dateiname, ReadOnly:=True)
'1. Blatt als datenquelle setzen
Set wksQuelle = datei.Sheets(1)
'Daten berechnen und eintragen
Call WerteEintragen(varName:="DataInput")
Call WerteEintragen(varName:="Lager PM")
'datei ohne speichern schließen
datei.Close savechanges:=False
Application.ScreenUpdating = True
MsgBox ("Daten wurden übertragen") 'Meldung machen
End Sub
Private Sub WerteEintragen(varName As Variant)
Dim rngGefunden As Range
'Prüfen, ob Zeilen mit varName vorhanden in Spalte F (6)
With wksQuelle
Set rngGefunden = .Columns(6).Find(What:=varName, LookIn:=xlValues, lookat:=xlWhole)
If Not rngGefunden Is Nothing Then
lngZeileZiel = lngZeileZiel + 1
'In Spalte 1 den Auswertungsnamen eintragen
wksZiel.Cells(lngZeileZiel, 1) = varName
'In SPalte 2 PO eintragen (Wert aus Zelle rechts von Zelle mit gefundenem Namen
wksZiel.Cells(lngZeileZiel, 2) = "PO " & rngGefunden.Offset(0, 1).Value
'In Spalte 3 die Summe alle Werte in Spalte H, wenn Spalte F = varName
wksZiel.Cells(lngZeileZiel, 3) = Application.WorksheetFunction.SumIf(.Columns(6), _
varName, .Columns(8))
'Währungseinheit in Spalte 4 eintragen
wksZiel.Cells(lngZeileZiel, 4) = "Euro"
Else
lngZeileZiel = lngZeileZiel + 1
'In Spalte 1 den Auswertungsnamen + Bemerkung eintragen
wksZiel.Cells(lngZeileZiel, 1) = varName & ": keine daten gefunden."
End If
End With
End Sub


Anzeige

343 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige