vielen Dank für den Code, ist eingebaut und funktioniert.
Post by Thomas RamelGrüezi Thomas
Thomas Neukirch schrieb am 30.08.2006
Post by Thomas Neukirchich möchte in VBA Werte aus einem definiert Bereich (RangeC) einer
geschlossenen Excel-Dateien einlesen und in einen Bereich (RangeP) eines
geöffneten Excel-Files übergeben, also ungefähr
Thisworkbook.RangeP.value = GeschlossenesWorkbook.RangeC.value
Nur, wie kann ich geeignet auf die geschlossene Datein zugreifen, ohne sie
vorher öffnen zu müssen?
Das ist so prinzipiell nicht machbar - auch für das Auslesen von Werten
muss die Datei zumindest über einen DDE-Kanal geöffnet werden.
So ist es dann allerdings nicht möglich bestimmte Bereiche anzusprechen,
das Range-Objekt nicht zur Verfügung steht; das klappt erst, wenn die Mappe
komplett in Excel geöffnet wurde.
Aus diesem Grunde habe ich mal einen Workaround programmiert, der via
Formeln einen Bezug zur Mappe herstellt und diese dann am Ende durch die
Werte ersetzt.
Du kannst sogar, wie gewünscht den Quell- und Ziel-Bereich angeben.
Kopiere die folgenden Zeilen in ein allgemeines Modul und rufe die Funktion
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
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
MsgBox "Die Quelldatei oder der Quellbereich ist ungültig!", _
vbExclamation, "Get data from closed Workbook"
GetDataClosedWB = False
End Function
Public Sub HoleDaten3()
Dim Pfad As String
Dim Dateiname As String
Dim Blatt As String
Pfad = "D:\DeinPfad\"
Dateiname = "DeineDatei.xls"
Blatt = "DeinTabellenblatt"
If GetDataClosedWB(Pfad, _
Dateiname, _
Blatt, _
"A5:DZ57", _
Worksheets("Tabelle3").Range("B10")) Then
MsgBox "Daten importiert"
End If
End Sub
Mit freundlichen Grüssen
--
- MVP für Microsoft-Excel -
[Win XP Pro SP-2 / xl2003 SP-1]
Microsoft Excel - Die ExpertenTipps tinyurl.com/cmned