5.2k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo Miteinander!

Ich habe lange im Internet gesucht, aber bin leider nicht weit gekommen. Ich will folgendes mithilfe eines Makros ausführen:

Zugriff auf geschlossene Excel-Datei->In einem bestimmten Blatt die Zellen AY2 bis AY25 (bzw. R2C51 bis R25C51) als Text kopieren->in aktuelle Exceldatei bei A1 einfügen.

Kann mir da jemand helfen? Das einzige, was ich bis jetzt habe ist:

"ExecuteExcel4Macro("'C:\[Dateiname.xls]Blattname'!R2C51:R25C51")

Hoffe ihr versteht was ich meine.

Tausend Dank schon im Voraus!

6 Antworten

0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
zugriff auf geschlossene Datei ist kompliziert. Arbeite mit Verknüpfung, ist einfacher.

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
0 Punkte
Beantwortet von
Vielenvielen Dank, das ist perfekt! Super.
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi all ^^

fuer interessierte,ein weiteres Beispiel :-)

gruss nighty

Sub CloseRead()
Dim ExcelApp As Object
Dim dat As Variant
Set ExcelApp = GetObject("D:\Temp\test.xls")
dat = ExcelApp.Worksheets(1).Range("A1:A3")
Range("A1:A3") = dat
End Sub
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi all ^^

hab ich auch schon bemerkt,da steckt der wurm drin

gruss nighty
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi all ^^

das war unfair die Mappe lag im hintergrund transparent und nicht in der fenster auflistung *g*

ich hol mir neue Inspiration aus dem netz :-)

gruss nighty
0 Punkte
Beantwortet von
hi all ^^

fuer Bereiche hab noch keine kuezere loesung gefunden

excel4 makros ausgeschlossen(schleifenkonstruct)

somit ist NOCH hajo`s Beispiel die erste Wahl

gruss nighty
...