Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1400to1404
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
Inhaltsverzeichnis

Datenimport aus geschlossener Datei (VBA)

Datenimport aus geschlossener Datei (VBA)
05.01.2015 12:20:58
Florian

Hallo zusammen,
ich brauche mal eure Hilfe. Nach langem Suchen konnte ich bislang noch keine Lösung finden, die genau mein Problem löst.
Wie folgt: Ich muss eine monatliche Auswertung machen, sodass es pro Monat immer eine Datei geben wird, z.B. für Dezember 2014 die Datei 1412.xlsx
In dieser Datei soll es einen kurzen Vergleich mit dem Vormonat geben, sodass ich z.B. in der Datei 1412.xlsx auf die Datei 1411.xlsx zugreifen möchte. Der Vormonat steht in einer Zelle des aktuellen Monats. Der Speicherort bleibt konstant.
Ich brauche also eine VBA Programmierung, die aus der geschlossenen Datei des Vormonats einen Zellbereich in die Datei des aktuellen Monats relativ verknüpft.
Ich würde mich freuen, wenn mir jemand von euch bei meinem Problem helfen kann.
Vielen Dank im Voraus.
Flo

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datenimport aus geschlossener Datei (VBA)
05.01.2015 12:31:03
Hajo_Zi
falls keine Verknüpfung sondern die Werte.
Option Explicit
Public Function GetDataClosedWB(SourcePath As String, _
SourceFile As String, sourceSheet As String, _
SourceRange As String, TargetRange As Range) As Boolean
'Holt einen Bereich aus einer _geschlossenen_ Arbeitsmappe
'Nur in VBA zu verwenden; nicht aus einer Tabellenzelle heraus
'© t.ramel@mvps.org
' wird durch die HoleDaten aufgerufen
Dim strQuelle       As String
Dim Zeilen          As Long
Dim Spalten         As Byte
On Error GoTo InvalidInput
strQuelle = "'" & SourcePath & "[" & SourceFile & "]" & sourceSheet & "'!" & Range( _
SourceRange).Cells(1, 1).Address(0, 0)
Zeilen = Range(SourceRange).Rows.Count
Spalten = Range(SourceRange).Columns.Count
With TargetRange.Cells(1, 1).Resize(Zeilen, Spalten)
.Formula = "=IF(" & strQuelle & "="""",""""," & strQuelle & ")"
.Value = .Value
End With
GetDataClosedWB = True
Exit Function
InvalidInput:
MsgBox "Die Quelldatei oder der Quellbereich ist ungültig!", vbExclamation, "Get data from  _
closed Workbook"
GetDataClosedWB = False
End Function
Public Sub HoleDaten()
' Die Funktion arbeitet mit der obrigen GetDataClosedWB zusammen
Dim Pfad            As String
Dim Dateiname       As String
Dim Blatt           As String
Dim Bereich         As String
Dim Ziel            As Range
Pfad = "L:\Eigene Dateien\Hajo\Internet\Test\2009\"
Dateiname = "Beispiel Forum 30.xlsm" ' aus welcher Datei soll er holen?
Blatt = "Tabelle1"  ' von welcher Tabelle soll er holen?
Bereich = "A1:B9"   ' aus welchem Bereich soll er holen?
Set Ziel = ActiveSheet.Range("A1")  ' in welchen Bereich soll er kopieren? Genauer gesagt:  _
Bei welcher Zelle soll er anfangen, Datein reinzukopieren? Bsp: ActiveCell geht auch
If GetDataClosedWB(Pfad, Dateiname, Blatt, Bereich, Ziel) Then
MsgBox "Daten importiert"
End If
End Sub

Gruß Hajo

Anzeige
AW: Datenimport aus geschlossener Datei (VBA)
05.01.2015 12:34:02
Florian
Ich probiere es gleich mal aus.
Schon mal vielen Dank!
Gruß, Flo

AW: Datenimport aus geschlossener Datei (VBA)
05.01.2015 12:44:13
Florian
Kann ich den Dateinamen auch mit Hilfe einer Zelle definieren?
Ich hatte mir überlegt, dass es funktioniert, wenn ich den Dateinamen immer in bspw. A1 stehen habe.
Der Name des Blatts soll dem des aktiven Blattes entsprechen. Die Dateien sind nämlich alle identisch aufgebaut, sodass aus der Datei 1411, Blatt 1 in Datei 1412, Blatt 1 kopiert werden soll.
Geht das auch?
Gruß, Flo

AW: Datenimport aus geschlossener Datei (VBA)
05.01.2015 12:45:47
Hajo_Zi
Dateiname = Range("A1")
Gruß Hajo

Anzeige
AW: Datenimport aus geschlossener Datei (VBA)
05.01.2015 12:54:40
Florian
Und das aktive Blatt kann ich wie ansprechen?
??? Blatt = Active.Sheet ???
Gruß, Flo

AW: Datenimport aus geschlossener Datei (VBA)
05.01.2015 12:58:37
Hajo_Zi
richtig
Gruß Hajo

AW: Datenimport aus geschlossener Datei (VBA)
05.01.2015 12:59:36
Hajo_Zi
ohne Punkt.
Gruß Hajo

AW: Datenimport aus geschlossener Datei (VBA)
05.01.2015 13:13:57
Florian
Habe jetzt alles geändert und angepasst, aber bekomme die Fehlermeldung "Objekt unterstützt diese Eigenschaft oder Methode nicht".
Könntest du nochmal drüber schauen, Hajo? Danke dir vielmals!!!
Option Explicit

Public Function GetDataClosedWB(SourcePath As String, _
SourceFile As String, sourceSheet As String, _
SourceRange As String, TargetRange As Range) As Boolean
'Holt einen Bereich aus einer _geschlossenen_ Arbeitsmappe
'Nur in VBA zu verwenden; nicht aus einer Tabellenzelle heraus
'© t.ramel@mvps.org
' wird durch die HoleDaten aufgerufen
Dim strQuelle       As String
Dim Zeilen          As Long
Dim Spalten         As Byte
On Error GoTo InvalidInput
strQuelle = "'" & SourcePath & "[" & SourceFile & "]" & sourceSheet & "'!" & Range( _
SourceRange).Cells(1, 1).Address(0, 0)
Zeilen = Range(SourceRange).Rows.Count
Spalten = Range(SourceRange).Columns.Count
With TargetRange.Cells(1, 1).Resize(Zeilen, Spalten)
.Formula = "=IF(" & strQuelle & "="""",""""," & strQuelle & ")"
.Value = .Value
End With
GetDataClosedWB = True
Exit Function
InvalidInput:
MsgBox "Die Quelldatei oder der Quellbereich ist ungültig!", vbExclamation, "Get data from  _
_closed Workbook"
GetDataClosedWB = False
End Function


Public Sub HoleDaten()
' Die Funktion arbeitet mit der obrigen GetDataClosedWB zusammen
Dim Pfad            As String
Dim Dateiname       As String
Dim Blatt           As String
Dim Bereich         As String
Dim Ziel            As Range
Pfad = "C:\Users\florian.walter\Documents\Test\"
Dateiname = Range("A8") ' aus welcher Datei soll er holen?
Blatt = ActiveSheet  ' von welcher Tabelle soll er holen?
Bereich = "B8:M8"   ' aus welchem Bereich soll er holen?
Set Ziel = ActiveSheet.Range("B8")  ' in welchen Bereich soll er kopieren? Genauer gesagt:  _
_
Bei welcher Zelle soll er anfangen, Datein reinzukopieren? Bsp: ActiveCell geht auch
If GetDataClosedWB(Pfad, Dateiname, Blatt, Bereich, Ziel) Then
MsgBox "Daten importiert"
End If
End Sub

Anzeige
AW: Datenimport aus geschlossener Datei (VBA)
05.01.2015 14:06:23
Hajo_Zi
ich benutze diesen Code nicht, der ist nur aus meinem Archiv.
Ich vergleiche jetzt nicht Deinen Code mit meinem.
Gruß Hajo

AW: Datenimport aus geschlossener Datei (VBA)
05.01.2015 14:10:31
Florian
Dann wäre es zumindest nett wenn du dir diesen Teil anguckst, weil ich nicht weiß, warum ich die besagte Fehlermeldung bekomme:
Pfad = "C:\Users\florian.walter\Documents\Test\"
Dateiname = Range("A8")
Blatt = ActiveSheet
Bereich = "B8:M8"
Set Ziel = ActiveSheet.Range("B8")
Danke, Flo

AW: Datenimport aus geschlossener Datei (VBA)
05.01.2015 14:12:15
Hajo_Zi
ich hätte mal aus dem Namen vermutet
Blatt = ActiveSheet.name
Gruß Hajo

Anzeige
AW: Datenimport aus geschlossener Datei (VBA)
05.01.2015 14:18:40
Florian
Funktioniert. Top!!!

308 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige