Registriert seit: 03.10.2017
Version(en): 2010
Hallo Zusammen,
ich möchte gerne per VBA-Makro Daten aus einer anderen Datei kopieren, ohne diese öffnen zu müssen.
Facts:
die zu kopierende Datei ist hier gespeichert
T:\Team\Monat
Name der Datei, in der die zu kopierenden Daten stehen lautet
Infos.xlsm
Bereich:
A3:V10000
die empfangende Datei ist offen
Tabellenblatt, welche die Daten empfängt
OINK
Bereich:
ab A1 (also alles überschreiben)
vielen Dank für eure Hilfe im Voraus
Gruß
Michael
PS: Leider bin ich in Excel nicht so fit, dass ich mir das aus anderen Beiträgen zusammensuchen kann. Sorry, falls das Thema so ähnlich schon mal hier war.
Registriert seit: 10.08.2017
Version(en): Professionel 2013
03.10.2017, 10:55
(Dieser Beitrag wurde zuletzt bearbeitet: 03.10.2017, 10:55 von Helvetier.)
Hallo Michael
Du lieferst spärliche Angaben. Ich übe Gegenrecht und kopiere hier etwas Funktionierendes aus meinem Fundus. Das Implementieren musst Du halt selber machen.
Code:
Public Sub HoleDaten()
Dim Pfad As String
Dim Dateiname As String
Dim Blatt As String
Pfad = ActiveWorkbook.Path & "\"
'Pfad = "D:\DeinPfad\"
Dateiname = Replace(ActiveWorkbook.Name, "user", "db") 'dies ist der Name der zu untersuchenden Quelldatei
'Dateiname = "DeineDatei.xls" 'das kann ein Bezug auf deine Zelle sein
Blatt = ActiveSheet.Name
'Blatt = "DeinTabellenblatt"
If GetDataClosedWB(Pfad, _
Dateiname, _
Blatt, _
"A1:E4", _
ActiveSheet.Range("G10")) Then
'Worksheets("Tabelle3").Range("B10")) Then
MsgBox "Daten importiert"
End If
End Sub
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
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
Gruss
Ein Lob ist der Lohn
Ein Tadel der Ansporn