Brauchen Sie Hilfe?
Web:     Online-Formular
E-Mail:  
Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein!
Tel:       +49(0)151 / 164 55 914

Nutzen Sie für Ihre Anfrage unser Online-Formular oder senden Sie uns eine E-Mail an Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein!. Gerne können Sie aber auch direkt telefonisch Kontakt aufnehmen.

   
     Referenzen
 Bosch 
  T-Systems
  Hagebau
  Siemens
 Areva  VW
 Haufe-Lexware  British American Tobacco
  nagel group farbe
   

Daten aus geschlossener Arbeitsmappe auslesen

Um Daten per VBA aus einer anderen Arbeitsmappe auszulesen, muss diese im Normalfall zunächst geöffnet werden um anschließend auf die einzelnen Zellinhalte zugreifen zu können.

 

Es geht aber auch anders. Die folgenden VBA-Beispiele zeigen, wie über einen Trick diese Beschränkung umgangen werden kann. Verwendet wird dazu eine Excel4Macro-Funktion, die nach wie vor in allen Excel-Versionen zur Verfügung steht.


Zentraler Bestandteil ist eine Function, welche die Daten aus der geschlossenen Arbeitsmappe ausliest. Dieser Funktion werden dazu einfach der Pfad, der Dateiname, das Tabellenblatt und die Zelle übergeben, die aus der geschlossenen Tabelle ausgelesen werden soll.

 

Listing 1 zeigt die Auslese-Function.

Private Function GetValue(pfad, datei, blatt, zelle)
'** Daten aus geschlossener Arbeitsmappe auslesen

'*** Dimensionierung der Variablen
Dim arg As String

'Sicherstellen, dass das datei vorhanden ist
If Right(pfad, 1) <> "\" Then pfad = pfad & "\"
If Dir(pfad & datei) = "" Then
GetValue = "datei Not Found"
Exit Function
End If

'** Das Argument erstellen
arg = "'" & pfad & "[" & datei & "]" & blatt & "'!" & Range(zelle).Range("A1").Address(, , xlR1C1)

'** Auslesen über Excel4Macro
GetValue = ExecuteExcel4Macro(arg)

End Function

 

Um einen einzelnen Wert aus einer angegebenen Zelle auszulesen, verwenden Sie folgendes Makro.

Sub Zelle_auslesen()
'** Dimensionierung der Variablen
Dim pfad As String, datei As String, blatt As String, zelle As String

'** Angaben zur auszulesenden Zelle
pfad = "F:\Excel\Beispiele"
datei = "geschlossene Mappe2.xls"
blatt = "Tabelle1"
bezug = "A2"

'** Eintragen in Zelle
ActiveCell.Value = GetValue(pfad, datei, blatt, bezug)

End Sub

Im Beispiel wird aus der Datei "geschlossene Mappe2.xls" die Zelle A2 aus dem Tabellenblatt "Tabelle1" ausgelesen und in die aktuell selektierte Zelle eingetragen.

Wenn ganze Bereiche aus der geschlossenen Arbeitsmappe ausgelesen werden sollen, dann verwenden Sie einfach folgenden VBA-Code.

Sub Bereich_auslesen()
'** Dimensionierung der Variablen
Dim pfad As String, datei As String, blatt As String, bereich As Range, zelle As Object

'** Angaben zur auszulesenden Zelle
pfad = "F:\Excel\Beispiele"
datei = "geschlossene Mappe2.xls"
blatt = "Tabelle1"
Set bereich = Range("A1:B10")

'** Bereich auslesen
For Each zelle In bereich
  
  '** Zellen umwandeln
  zelle = zelle.Address(False, False)
  
  '** Eintragen in Bereich
  ActiveSheet.Cells(zelle.Row, zelle.Column).Value = GetValue(pfad, datei, blatt, zelle)
Next zelle

End Sub

In diesem Beispiel wird der Zellbereich A1 bis B10 der geschlossenen Tabelle ausgelesen und in das aktuelle Tabellenblatt im gleichen Zellbereich eingetragen.

Die Beispieldatei mit dem VBA-Code können Sie über den folgenden Link herunterladen.

 

   

Relevante Artikel

   

Excel-Inside auf Facebook Excel-Live News blog Excel-Inside RSS-Feed Twitter Account für Excel-Inside Mail an Excel-Inside 

Programmierung
Excel Auftragsprogrammierung Access Auftragsprogrammierung
Word Auftragsprogrammierung Outlook Auftragsprogrammierung
   
Unsere Produkte
Office Schulungen VBA, Excel, Access
E-Book Formeln und Funktionen Excel 2013