Auftragsprogrammierung

Projektanfrage über Web Formular   per Online-Formular 
Projektanfrage über E-Mail  Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein!
Projektanfrage per Telefon  +49 (0)151 / 164 55 914
Projektanfrage weitere Informationen  weitere Informationen 

Sie benötigen Hilfe oder Unterstützung? Nutzen Sie für Ihre Anfrage unser Online-Formular, senden Sie uns eine Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein!  oder rufen Sie uns einfach an.

Referenzen

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

Daten aus geschlossener Arbeitsmappe über Zellverknüpfungen auslesen

Daten können aus geschlossenen Arbeitsmappen auf verschiedene Arten ausgelesen werden. 

In einem Artikel habe ich vor einiger Zeit eine Möglichkeit vorgestellt, um Daten direkt aus einer geschlossenen Arbeitsmappe auszulesen. Dabei werden die Daten direkt als Werte von der geschlossenen Quell-Datei in die geöffnete Zieldatei übertragen. Weiter Infos dazu finden Sie in diesem Beitrag: Daten aus geschlossener Arbeitsmappe auslesen

In diesem Beitrag zeigen wir Ihnen eine  Ihnen einen etwas anderen Ansatz.
Das Auslesen der Werte aus der geschlossenen Arbeitsmappe erfolgt in diesem Beispiel über Formeln, also über Zellbezüge zu der geschlossenen Arbeitsmappe. Dabei wird zunächst die Formel zu der angegebenen Zelle bzw. Zellbereich erstellt und im nächsten Schritt in einen Wert umgewandelt. 

Variante 1: Verwendung der Formeln zum Auslesen der Werte

In dieser ersten Variante werden die Daten aus der geschlossenen Arbeitsmappe über Formelbezüge ausgelesen und entsprechend in der Zieldatei dargestellt. Die Formeln werden dabei direkt per VBA erzeugt.
Dieser Ansatz bietet den Vorteil, dass die Werte in der Zieldatei automatisch aktualisiert werden, wenn sich die Daten in der Quelldatei ändern. 

Hier der entsprechende VBA-Code, welcher in einem Code-Modul zu erfassen ist:

Const strSheetQ As String = "Tabelle1" '** Diese Tabelle wird ausgelesen"
Const strSheetZ As String = "Tabelle1" '** Die Tabelle in dieser Datei, in welche die Daten übertragen werden
Const strRange As String = "A1:A4" '** Der Bereich wird ausgelesen
Const strFile As String = "F:\Excel\Beispiele\geschlossene Mappe2.xlsx" '** Pfad und Datei

Public Sub DatenHolen()
  '** Daten aus geschlossener Datei per Zell-Verknüpfung auslesen und Formel zur externen Datei erzeugen
  With ThisWorkbook.Worksheets(strSheetZ)
    '** Eintragen der Formel
    .Range(strRange).Formula = "='" & Mid(strFile, 1, InStrRev(strFile, "\")) & "[" & _
    Mid(strFile, InStrRev(strFile, "\") + 1) & "]" & strSheetQ & "'!" & strRange
  End With

End Sub


Damit die richtigen Werte ausgelesen werden, müssen im ersten Schritt die Angeben zu der Quell- sowie der Zieldatei und dem auszulesenden Zellbereich hinter den Const-Variablen angegeben werden.



Variante 2: Umwandeln der Formel-Inhalte in unveränderliche Werte

In der zweiten Variante wird genau der gleiche Ansatz verwendet, nur werden die Formeln in einem zweiten Schritt in fixe Werte umgewandelt. Dies hat zur Folge, dass sich Änderungen in der Quelldatei nicht automatisch in der Zieldatei auswirken. Eine Aktualisierung der Werte in der Zieldatei wird erst durchgeführt, wenn der untenstehende VBA-Code erneut ausgeführt wird.

Dieser Code ist absolut identisch mit dem Code aus Variante 1, nur dass eine VBA-Zeile zusätzlich vorhanden ist, welche die über die eingefügten Formel ausgelesene Daten in fixe Werte umwandelt. 

Const strSheetQ As String = "Tabelle1" '** Diese Tabelle wird ausgelesen"
Const strSheetZ As String = "Tabelle1" '** Die Tabelle in dieser Datei, in welche die Daten übertragen werden
Const strRange As String = "A1:A4" '** Der Bereich wird ausgelesen
Const strFile As String = "F:\Excel\Beispiele\geschlossene Mappe2.xlsx" '** Pfad und Datei

Public Sub DatenHolen()
  '** Daten aus geschlossener Datei per Zell-Verknüpfung auslesen und Formel zur externen Datei erzeugen
  With ThisWorkbook.Worksheets(strSheetZ)
    '** Eintragen der Formel
    .Range(strRange).Formula = "='" & Mid(strFile, 1, InStrRev(strFile, "\")) & "[" & _
    Mid(strFile, InStrRev(strFile, "\") + 1) & "]" & strSheetQ & "'!" & strRange
  End With

  '** Umwandeln der Formel in fixe Werte
  .Range(strRange).Value = .Range(strRange).Value

End Sub



Drucken E-Mail

Relevante Artikel

  • Umbenennen von Dateien per VBA

      Das folgende Makro benennt Dateien um, indem der alte Dateiname einfach durch den neuen ersetzt wird.   {code} Public Sub umbenennen() Name...

  • Windows- bzw. Windwos-System-Verzeichnis ermitteln

    Das Windowsverzeichnis ermitteln (VBA) Um das Windows-Verzeichnis zu ermitteln fügen Sie folgenden Code in ein Modul ein: Private Declare Function...

  • Arbeitsmappe per VBA schließen

    Es gibt verschiedene Möglichkeiten per VBA eine Arbeitsmappe zu schließen. Variante 1: Speichern mit DialogfensterBei dieser Variante stellt Excel die...

  • Prüfen, ob eine Diskette eingelegt ist

    Falls noch jemand eine Diskette im Einsatz hat, dann könnte dieser Code weiterhelfen.Mit diesem Code können Sie prüfen, ob im Diskettenlaufwerk eine...

  • Dateiname und Pfad in Fußzeile einfügen

    Mit dem folgenden Code wird der Dateiname und der Pfad der Datei automatisch in die Fußzeile im linken Bereich eingefügt.Die Datei muss zuerst aber...

Projektanfrage

 Sie benötigen eine Auftragsprogrammierung?
 Oder suchen Unterstützung bei der 
 Lösungsfindung?

  Nutzen Sie unser Anfrageformular

  Jetzt anrufen unter 0151 / 164 55 914

 Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein! Projektanfrage per Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein! senden

  Weitere Informationen

sitepanel question2

P
R
O
J
E
K
T
A
N
F
R
A
G
E
Cookies erleichtern die Bereitstellung unserer Dienste. Mit der Bestätigung erklären Sie sich mit der Verwendung von Cookies auf Excel-Inside Solutions einverstanden.
Weitere Informationen Ok