Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Daten aus einer bestimmten datei ziehen





Frage

hallo zusammen, ich habe ein problem. ich würde gerne daten aus einer datei ziehen die jeden tag neu erstellt wird und somit jeweils einer anderen namen hat. (inbound prozesse "heutiges datum".xls) D.h. mein makro müßte mich fragen aus welcher datei die daten gezogen werden sollen. Kann man das überhaupt mit einem makro machen oder müßte ich eine komplettes formular im visual basic programmieren? gruß felix

Antwort 1 von JoeKe

Moin Felix,

da gibt es einmal die Möglichkeit mit einer Inputbox die Datei abzufragen aus der die Daten kommen sollen.

Datei=Inputbox("Wie heißt die Datei?")
Workbooks.Open Filename:= _
"C\:Dokumente und Einstellungen\user\Desktop\" & Datei & ".xls"

oder wenn die Dateien sich nur im Datum wie oben beschrieben unterscheiden, kann man dies wie folgt in einen Code einbauen:

Workbooks.Open Filename:= _
"C:\Dokumente und Einstellungen\user\Desktop\Test " & Date & ".xls"


Gruß

JöKe

Antwort 2 von CaroS

Hallo Felix,

Du kannst dieses Codestück bei Dir bestimmt an der richtigen Stelle einbauen, oder?

Sub Welche_Datei_öffnen()
Dim dname As String
dname = InputBox("Für Dateien, die sich nicht im selben Verzeichnis befinden, bitte den absoluten Pfad angeben!" & Chr(10) & Chr(10) & "(Angezeigt werden Pfad und Name der aktuellen Excel-Datei.)", "Welche Datei soll geöffnet werden?", ActiveWorkbook.Path & "\" & ActiveWorkbook.Name)
Workbooks.Open dname
End Sub

Wenn es mehrheitlich oder ausschließlich um Dateien geht, deren Namen nach einem bestimmten Schema aufgebaut sind, könnte man die Vorgabe noch ein wenig verbessern, also statt der aktuellen Datei einen bestimmten Pfad und einen bestimmten Namen anbieten. Willst Du immer (meistens) auf die aktuelle (heutige) Datei zugreifen? In welchem Verzeichnis steht (stehen) die zu öffnende(n) Datei(en)?

Gruß,
CaroS

Antwort 3 von fixel

Ich danke euch für eure beiden beiträge, ihr hättet wahrscheinlich schon die komplette lösung parat. JöKe dein vorschlag funktioniert soweit ganz gut. ich gebe das datum ein und die datei wird geöffnet.

dann aber will ich aus der geöffneten datei daten in eine weitere xls.datei (es müßte nochmal eine frage nach dem datum erfolgen) ziehen. leider komm ich da überhaupt nicht weiter.

Anbei mal ein kleiner vorgeschmack auf meinen code

Sub Ziehen()
´
´ Makro am 25.08.2006 von Fixel aufgezeichnet
´
Dim Datum As String
Dim Quelle As Workbooks


Datum = InputBox("Für welches Datum?")
Quelle.Open Filename:="I:\UH-BE\Felix & Nadine\Inbound_I Gesamt-Dezentral " & Datum & ".xls"
Sheets("Histogramme Gesamt").Select
Range("E11:F16").Select
Selection.Copy
Windows("I:\UH-BE\Felix & Nadine\Managementbericht Gesamt-Dezentral " & Datum & ".xls").Activate
Range2 ("D9:E14")
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End Sub


Falls ihr etwas dazusteuern könntet würde ich mich freuen.

Vielen vielen Dank

und liebe Grüße aus Hamburg


PS: Wenn Ihr wüßtet was ihr für die allg. Geschäftswelt für ein Wert habt, aber wahrscheinlich wißt um den Mehrwert den Ihr leistet.

Antwort 4 von JoeKe

Hallo felix,

handelt es sich dann um insgesamt drei Dateien?

Inbound_I Gesamt-Dezentral+Datum
Managementbericht Gesamt-Dezentral+Datum
?+Datum

Handelt es sich dann auch jeweils um das selbe Datum?

Falls beide male "JA" dann könnte dein Code etwa so aussehen:

Sub Ziehen()
Dim Datum As String
Dim Quelle As Workbooks
Application.ScreenUpdating = False
Datum = InputBox("Für welches Datum?")
Quelle.Open Filename:="I:\UH-BE\Felix & Nadine\Inbound_I Gesamt-Dezentral " & Datum & ".xls"
Sheets("Histogramme Gesamt").Select
Range("E11:F16").Copy
Windows("I:\UH-BE\Felix & Nadine\Managementbericht Gesamt-Dezentral " & Datum & ".xls").Activate
Range("D9").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Quelle.Open Filename:="I:\UH-BE\Felix & Nadine\? " & Datum & ".xls"
Sheets("Tabelle1").Select
Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub

Der fett geschriebene Teil ist die Ergänzung. Der Rest ist dein Code den ich ein wenig "bereinigt" habe.

Gruß

JöKe

Antwort 5 von fixel

Hallo Jöke,

vielen Dank ersteinmal für deinen Beitrag.

Es sind zwei Dateien, ich möchte Daten aus Inbound_I Gesamt-Dezentral " & Datum & ".xls in Managementbericht Gesamt-Dezentral " & Datum & ".xls ziehen

der code müßte dann irgendwie wie unten aussehen, leider kommt die fehlermeldung

Laufzeitfehler 91: Objektvariable oder With-Blockvariable nicht festgelegt

Sub Ziehen()
´
´ Ziehen Makro
´ Makro am 25.08.2006 von U433274 aufgezeichnet
´
Dim Datum As String
Dim Quelle As Workbooks

Application.ScreenUpdating = False
Datum = InputBox("Für welches Datum?")
Quelle.Open Filename:="I:\UH-BE\Felix & Nadine\Inbound_I Gesamt-Dezentral " & Datum & ".xls"
Sheets("Histogramme Gesamt").Select
Range("E11:F16").Copy
Windows("I:\UH-BE\Felix & Nadine\Managementbericht Gesamt-Dezentral " & Datum & ".xls").Activate
Range("D9").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub

gruß felix

Antwort 6 von JoeKe

Moin felix,

wenn du, wenn die Fehlermeldung erschein, auf debuggen klickst, ist die Zeile:

Quelle.Open Filename:="I:\UH-BE\Felix & Nadine\Inbound_I Gesamt-Dezentral " & Datum & ".xls"

gelb markiert?

Wenn ja, ersetzt sie mal hierdurch:

Workbooks.Open Filename:="I:\UH-BE\Felix & Nadine\Inbound_I Gesamt-Dezentral " & Datum & ".xls"

Falls ich mich geirrt habe poste mal die Zeile, die gelb markiert wird.

MfG

JöKe

Antwort 7 von fixel

hallo jöke,

leider erscheint die zeile immer noch in gelb, sowohl deine als auch meine zeile

deine

Workbooks.Open Filename:="I:\UH-BE\Felix & Nadine\Inbound_I Gesamt-Dezentral " & Datum & ".xls"

meine

Quelle.Open Filename:="I:\UH-BE\Felix & Nadine\? " & Datum & ".xls"
Sheets("Tabelle1").Select


ich weiß nicht was ich machen soll.

gruss felix

Antwort 8 von JoeKe

Hallo felix,

leider ist es immer schwer Fehlermeldungen nachzustellen. Zumal ich ja nicht deine Originaldateien zur Verfügung habe.
Aber versuch es mal so:

Sub Ziehen()
´
´ Ziehen Makro
´ Makro am 25.08.2006 von U433274 aufgezeichnet
´
Dim Datum As String

Application.ScreenUpdating = False
Datum = InputBox("Für welches Datum?")
Workbooks.Open Filename:="I:\UH-BE\Felix & Nadine\Inbound_I Gesamt-Dezentral " & Datum & ".xls"
Sheets("Histogramme Gesamt").Select
Range("E11:F16").Copy
Workbooks(Managementbericht Gesamt-Dezentral " & Datum & ".xls").Activate
Worksheets("Hier den Namen des Blattes in das hineinkopiert werden soll").Select
Range("D9").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub

Gruß

JöKe

Antwort 9 von fixel

ich bin dir unendlich dankbar, es klappt einwandfrei.
da aus dem ersten verschiedene Daten herausgezogen werden müssen, versuch ich jetzt diese prodzedur zu wiederholen, dafür muss ich dann immer wieder auf die workbooks zugreifen, leider weiß ich nicht wie das geht. hast du einen tip.

anbei der code.

Sub Ziehen()
´
´ Ziehen Makro
´ Makro am 25.08.2006 von U433274 aufgezeichnet

Dim Datum As String

Application.ScreenUpdating = False
Datum = InputBox("Für welches Datum?")
Workbooks.Open Filename:="I:\UH-BE\Felix & Nadine\Inbound_I Gesamt-Dezentral " & Datum & ".xls"
Sheets("Histogramme Gesamt").Select
Range("E11:F16").Copy
Workbooks.Open Filename:="I:\UH-BE\Felix & Nadine\Managementbericht Gesamt-Dezentral " & Datum & ".xls"
Worksheets("Histogramme").Select
Range("D9").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Application.ScreenUpdating = True
Application.ScreenUpdating = False
´die folgende zeile erscheint dann im debug modus gelb
Workbooks("I:\UH-BE\Felix & Nadine\Managementbericht Gesamt-Dezentral " & Datum & ".xls").Activate
Sheets("Histogramme Gesamt").Select
Range("I11:J16").Copy

Worksheets("Histogramme").Select
Range("H9").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub

Antwort 10 von JoeKe

Moin felix,

versuch es mal mit folgenden Code:

Option Explicit

Sub Ziehen()
Dim Datum As String
Datum = InputBox("Für welches Datum?")
Rem ersten Bereich übertragen
Workbooks.Open Filename:="I:\UH-BE\Felix & Nadine\Inbound_I Gesamt-Dezentral " & Datum & ".xls"
Sheets("Histogramme Gesamt").Range("E11:F16").Copy _
Destination:=Workbooks("Managementbericht Gesamt-Dezentral " & Datum & ".xls"). _
Worksheets("Histogramme").Range("D9")
Rem zweiten Bereich übertragen
Workbooks("Inbound_I Gesamt-Dezentral " & Datum & ".xls"). _
Sheets("Histogramme Gesamt").Range("I11:J16").Copy _
Destination:=Workbooks("Managementbericht Gesamt-Dezentral " & Datum & ".xls"). _
Worksheets("Histogramme").Range("H9")
Rem Hier können weitere Bereiche nach vorhergehenden Beispiel zugefügt werden
End Sub



Gruß

JöKe

Antwort 11 von fixel

ich danke dir, aber ich habe es hinbekommen.

anbei der code der funzt.

Sub Ziehen()
´
´ Ziehen Makro
´ Makro am 25.08.2006 von U433274 aufgezeichnet

Dim datum As String
Dim Monat As String
Dim Quelle As Workbook
Dim Quelle2 As Workbook
Dim Ziel As Workbook

Application.ScreenUpdating = False
datum = InputBox("Für welches Datum? (xx.xx.xx)")
Application.ScreenUpdating = False
Monat = InputBox("Für welchen Monat? (Xxx)")

´Inbound I Gesamt start receiving -> customs wird kopiert
Set Quelle = Workbooks.Open _
("I:\UH-BE\Controlling\Tagesauswertung\Performance_Inbound_I\" & Monat & "\Inbound_I Gesamt-Dezentral " & datum & ".xls")
Sheets("Histogramme Gesamt").Select
Range("E11:F16").Copy
Set Ziel = Workbooks.Open _
("I:\UH-BE\Controlling\Tagesauswertung\Managementberichte\" & Monat & "\Managementbericht Gesamt-Dezentral " & datum & " .xls")
Sheets("Histogramme").Select
Range("D9").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Quelle.Activate
Sheets("Histogramme Gesamt").Select
Range("E5").Copy
Ziel.Activate
Sheets("Histogramme").Select
Range("F14").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

´Inbound I Gesamt customs -> receiving transaction wird kopiert
Quelle.Activate
Sheets("Histogramme Gesamt").Select
Range("I11:J16").Copy
Ziel.Activate
Sheets("Histogramme").Select
Range("H9").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Quelle.Activate
Sheets("Histogramme Gesamt").Select
Range("I5").Copy
Ziel.Activate
Sheets("Histogramme").Select
Range("J14").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False


ich bin dir unendlich dankbar, deine denkanstöße haben mich zur lösung getrieben.

gruß fixel