Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Header aus geschlossener Mappe auslesen

Forumthread: Header aus geschlossener Mappe auslesen

Header aus geschlossener Mappe auslesen
22.03.2023 19:52:32
Martin

Hallo liebes Forum,

ich verwende diesen VBA Code zum auslesen eines Bereichs aus einer anderen geschlossenen Arbeitsmappe.
Es funktioniert auch einwandfrei.

Leider wird der Header (Kopfzeile) nicht auch kopiert.
Wie stelle ich das an das er auch Kopiert wird?

Viele Dank für Eure Unterstützung


Sub Bereich_auslesen()
Dim pfad As String, datei As String, blatt As String, bereich As Range, zelle As Object

'** Angaben zur auszulesenden Zelle
pfad = "/Users/martin/Documents/Ordner"
datei = "mappe.xlsm"
blatt = "Tabelle1"
Set bereich = Range("A1:Q52")

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


Anzeige

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Header aus geschlossener Mappe auslesen
22.03.2023 20:03:01
Oberschlumpf
hi Martin

a) wieso darf die Datei nicht geöffnet werden zum Auslesen - nach Auslesen kann man die Datei ja auch wieder schließen...ohne Speichern
b) die Funktion GetValue ist in deinem gezeigten Code nicht vorhanden - wir wissen nicht, was genau da passiert

Am besten, du zeigst bitte per Upload...
a) ...eine Bsp-Datei mit all dem Code, der erforderlich ist, um dich verstehen zu können
b) ...ebenso eine Bsp-Datei von der Datei, aus der du ohne öffnen auslesen willst - Originaldaten kannst du ja gegen Bsp-Daten austauschen

Ciao
Thorsten


Anzeige
AW: Header aus geschlossener Mappe auslesen
22.03.2023 20:31:16
volti
Hallo zusammen,

in der Tat ist es ratsam hier einen vollstänigen Code zu zeigen, sonst ist es Rätselraten.

Wahrscheinlich ist Getvalue basierend auf dem beliebten Excel4Macro, aber es gibt auch andere Varinaten...
Code:


Private Function GetValue3(ByVal sPath As String, ByVal sFile As String, _ ByVal sSheet As String, ByVal sTarget As String) As Variant 'Einen Wert aus einer Datei holen On Error GoTo ErrorHandler If Right$(sPath, 1) <> "\" Then sPath = sPath & "\" GetValue3 = ExecuteExcel4Macro("'" & sPath & "[" & sFile & "]" & sSheet & "'!" _ & Range(sTarget).Range("A1").Address(, , xlR1C1)) Exit Function ErrorHandler: GetValue3 = CVErr(xlErrRef) End Function '### Ein Wert (langsamer)### Private Function GetValue1(sPath As String, sFile As String, sSheet As String, sRange As String) As String ' Exceldatei im Hintergrund öffnen und Wert holen If Right$(" " & sPath, 1) <> "\" Then sPath = sPath & "\" With CreateObject("Excel.Application") With .Workbooks.Open(sPath & sFile) GetValue1 = .Sheets(sSheet).Range(sRange).Value .Close savechanges:=False End With .Quit End With End Function '### Ein Wert (schneller)### Private Function GetValue(sPath As String, sFile As String, sSheet As String, sRange As String) As String ' Exceldatei im Hintergrund öffnen und Wert holen If Right$(" " & sPath, 1) <> "\" Then sPath = sPath & "\" With GetObject(PathName:=sPath & sFile) GetValue = .Sheets(sSheet).Range(sRange).Value .Close savechanges:=False End With End Function

_________________________
viele Grüße aus Freigericht 😊
Karl-Heinz



Anzeige
AW: Header aus geschlossener Mappe auslesen
22.03.2023 21:08:48
Martin
Sorry, ha habe nicht den kompletten Code....

nochmal ;)


Option Explicit


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 = "/Users/martin/Documents/"
datei = "aktuell.xlsm"
blatt = "Tabelle1"
Set bereich = Range("A1:Q52")

   For Each zelle In bereich
  
       zelle.Offset(0, 0) = zelle.Address(False, False)
      ActiveSheet.Cells(zelle.Row, zelle.Column).Value = _
      GetValue(pfad, datei, blatt, zelle.Offset)    
   Next zelle
End Sub

Private Function GetValue(pfad, datei, blatt, zelle)
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

    arg = "'" & pfad & "[" & datei & "]" & blatt & "'!" & Range(zelle).Range("A1").Address(, , xlR1C1)
    GetValue = ExecuteExcel4Macro(arg)
End Function



Anzeige
AW: Header aus geschlossener Mappe auslesen
22.03.2023 21:02:12
Martin
Hallo Thorsten,

danke für die schnelle Antwort.
Es muss nicht aus einer geschlossenen Mappe ausgelesen werden, dachte nur ich kann den Code einfach nur erweitern.

Habe die Beispiele als Datei kurz gemacht.

ZielMappe ist: https://www.herber.de/bbs/user/158386.xlsm
Quelle ist: https://www.herber.de/bbs/user/158385.xlsm
Gruß Martin


Anzeige
AW: Header aus geschlossener Mappe auslesen
22.03.2023 20:08:55
Daniel
Hi
schwer zu sagen.
es sollte klar sein, dass du auf diese Weise nur die Werte übernimmst und nichts anderes (Formatierungen usw)
prinzipiell beginnt der Code mit Zeile 1, also sollte die erste Zeile mit übernommen werden und die sollte dann der Header sein.
außerdem lässt die Schleife in eine Zeile zusammenfassen:

For Each zelle In Range("A1:Q52")
      Zelle.Value = GetValue(pfad, datei, blatt, zelle.address(0, 0))
next
aber wie gesagt, damit bekommst du nur die reinen Werte.

Öffne doch einfach die Datei, dann kannst du alles was du brauchst kopieren.
wenn man mit Schreibschutz öffnet, gibts auch keine Probleme, wenn andere Zeitgleich mit der Datei arbeiten.
Workbooks.Open Pfad & "\" & datei, ReadOnly:=True
Sheets(blatt).Range("A1:Q52").Copy Destination:=ThisWorkbook.sheets(...).Range("A1")
Workbooks(datei).Close False
Gruß Daniel


Anzeige
AW: Header aus geschlossener Mappe auslesen
22.03.2023 22:24:25
Martin
Hallo Daniel,

ich habe es ausprobiert.
Der Header wird nicht kopiert, Aber alles ab Zeile 1.

Gruß Martin


AW: Header aus geschlossener Mappe auslesen
22.03.2023 21:51:07
Yal
Hallo Martin,

versuche mit:
Sub Bereich_auslesen()
'** Angaben zur auszulesenden Zelle
Const pfad = "/Users/martin/Documents/"
Const datei = "aktuell.xlsm"
Const blatt = "Tabelle1"

    Application.EnableEvents = False 
    With ActiveSheet
        .Range("A1:Q52").Formula = "='" & pfad & "[" & datei & "]" & blatt & "'!A1" 'einfache Formel hinzufügen
        .Calculate 'Aktualisieren
        .Range("A1:Q52").Value = .Range("A1:Q52").Value 'Formel durch Wert ersetzen
    End With
    Application.EnableEvents = True
End Sub
VG
Yal


Anzeige
AW: Header aus geschlossener Mappe auslesen
22.03.2023 22:22:38
Martin
Hallo Yal,

der Code ist super kurz, und Kopiert auch alle Zellen.
Aber der Header wird nicht kopiert.

Gruß Martin


AW: Header aus geschlossener Mappe auslesen
22.03.2023 22:56:04
Volti
Ich frage mich mittlerweile was Du hier mit Header meinst.
Offensichtlich wohl nicht die Zeile 1 des Tabellenblattes.

Solltest Du tatsächlich die Kopfzeile der Druckansicht meinen?
Die kannst Du so nicht kopieren.

Gruß KH


Anzeige
AW: Header aus geschlossener Mappe auslesen
22.03.2023 23:36:20
Martin
Sorry, ja meinte die Kopfzeile.
Es gibt ja die die Möglichkeit aus einem aktiven Tabellenbaltt in ein anderes zu kopieren.
Dachte das kann man irgendwie in mein Makro integrieren.


Sub Header()
    With ActiveSheet.PageSetup
        .LeftHeader = Sheets("Tabelle2").PageSetup.LeftHeader
    End With
End Sub


Anzeige
AW: Header aus geschlossener Mappe auslesen
23.03.2023 11:06:15
Daniel
Hi

Solche Daten kannst du nur auslesen und über tragen, wenn du die Datei geöffnet hast.
Das Daten lesen aus geschlossenen Dateien funktioniert nur mit Zellwerten, weil es den Externen Zellbezug einer Formel simuliert.
Gruß Daniel


Anzeige
AW: Header aus geschlossener Mappe auslesen
22.03.2023 22:59:51
onur
Kann es sein, dass du die ganze Zeit mit "Leider wird der Header (Kopfzeile) nicht auch kopiert." die Kopfzeile vom Pagesetup (Seitenlayout Druck) meinst (so wie die Fusszeile) und nicht den Spaltenkopf aus der Tabelle ?


AW: Header aus geschlossener Mappe auslesen
22.03.2023 23:40:02
Martin
Ja genau, deswegen habe ich in Klammer Kopfzeile geschrieben.

Im Makro heist es hal Header.
Um in eine Mappe zu kopieren:


Sub KopfUndFuß()
    With ActiveSheet.PageSetup
      .LeftHeader = Sheets("Tabelle2").PageSetup.LeftHeader
    End With
End Sub


Anzeige
AW: Header aus geschlossener Mappe auslesen
22.03.2023 23:50:37
onur
ICH würde einfach Datei öffnen, das gewünschte (inkl. Kopfzeile) kopieren und Datei schliessen.
Mir ist aber irgendwie unklar, was diese Zeile bewirken soll:
zelle.Offset(0, 0) = zelle.Address(False, False)


AW: Header aus geschlossener Mappe auslesen
22.03.2023 23:55:31
Martin
Damit bestimme ich wo die Werte eingefügt werden sollen.


  zelle.Offset(0, 0) = zelle.Address(False, False)   'zum einfügen an gleicher Stelle "zelle = zelle.Address(False, False)"
  zelle.Offset(-9, 2) = zelle.Address(False, False) ' zum einfügen  -9 =9 Zeilen zurück, 2= 2 Spalten weiter

Anzeige
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige