Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1704to1708
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Daten aus geschlossenen Mappen auslesen
09.08.2019 12:28:16
Simone
Hallo, ich benötige leider Hilfe. Ich möchte meine Zeitabrechnungen zusammenführen. Leider wäre der Umfang zu groß um jede Mappe zu öffnen und dann Daten auszulesen. Daher habe ich hier geschmökert und auch eine Funktion gefunden, welche perfekt für mich wäre:
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 = "Laufwerk"
Dateiname = "Testmappe.xlsm" ' aus welcher Datei soll er holen?
Blatt = "Tabelle1"  ' von welcher Tabelle soll er holen?
Bereich = "Celle:Celle"   ' aus welchem Bereich soll er holen?
Set Ziel = ActiveSheet.Range("Celle")  ' 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

Weiterhin habe ich eine andere Version, welche auch super klappt:
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
Nun habe ich bei beiden Varianten das Problem, dass natürlich die Cellen mit hinterlegten Formeln übernommen werden. Leider möchte ich aber nur die Werte, wie kann ich hier eine Lösung finden? Liebe Grüße

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten aus geschlossenen Mappen auslesen
09.08.2019 12:54:04
volti
Hallo Simone,
hier mal ein Ansatz, der für Dein Anliegen funktionieren könnte:
Sub ZugriffAufGeschlosseneSeite()
 Dim Rng As Range
 With CreateObject("Excel.Application")
'Hier Datei und Blattnamen anpassen
  With .Workbooks.Open("C:\Users\A999985\ODG\Projektbeispiele.xlsb").Sheets(1)
'Hier den gewünschten Bereich angeben
'     Set Rng = .Range("$A1:$B10")
     Set Rng = .UsedRange
'Hier das Ziel angeben
     ActiveSheet.Range("$A1").Resize(Rng.Rows.Count, Rng.Columns.Count).Value = Rng.Value
  End With
  .Quit
 End With
End Sub

Hier wird einfach ein zusammenhängender Bereich aus einer geschlossenen Datei übernommen.
Das müsste natürlich evtl. noch für Deine Wünsche angepasst werden....
viele Grüße
Karl-Heinz
Anzeige
AW: Daten aus geschlossenen Mappen auslesen
09.08.2019 13:09:26
Torsten
Hallo Karl-Heinz,
Hier wird einfach ein zusammenhängender Bereich aus einer geschlossenen Datei übernommen.
das stimmt nicht ganz, wie du an dieser Zeile siehst:
With .Workbooks.Open("C:\Users\A999985\ODG\Projektbeispiele.xlsb").Sheets(1)

Hier wird naemlich die Datei geoeffnet, aus der kopiert werden soll. Und genau das wollte Simone vermeiden.
 Leider wäre der Umfang zu groß um jede Mappe zu öffnen
Gruss Torsten
AW: Daten aus geschlossenen Mappen auslesen
09.08.2019 15:21:16
volti
Hallo Thorsten,
das ist mir bewusst. Aber wann ist eine Datei geöffnet?
Hier erscheint die XLS-Mappe nicht in der Taskleiste oder sonst irgendwo und es geht ziemlich fix. Möglicherweise wird es direkt aus den XLM-Inhalten extrahiert, ohne das sonst übliche Excelumfeld.
Das weiß ich allerdings nicht.
Wenn ich das Makro per F8 durchzappe, erscheint an keiner Stelle die Quell-Arbeitsmappe.
Für mich ist das geschlossen (oder wenigstens hidden) und ein gangbarerer Weg, wenn man die Formelbezüge vermeiden will.
Und irgendwie muss die Mappe schon angesprochen werden, wenn man damit was machen will.
Häng Dich da bitte nicht an dem Wort "Open" auf.
viele Grüße
Karl-Heinz
Anzeige
AW: Daten aus geschlossenen Mappen auslesen
09.08.2019 15:48:40
Torsten
Hallo Karl-Heinz,
das sollte auch kein Angriff sein. Ich habs gerade mal durchgespielt und du hast recht. Die Datei wird geoeffnet, aber unsichtbar.
Schoenes Wochenende.
AW: Daten aus geschlossenen Mappen auslesen
09.08.2019 13:27:01
Torsten
Hallo Simone,
ich versteh nicht ganz dein Problem. Die erste Funktion funktioniert sauber. mit den Befehl:
.Value = .Value

sollten auch alle Formeln in Werte umgewandelt werden.
Gruss Torsten
AW: Daten aus geschlossenen Mappen auslesen
09.08.2019 13:52:20
Simone
Hey, ich habe als Ursprung drei Spalten, in denen Summenformeln hinterlegt sind - also die Stunden der Arbeitszeit als Summe in dieser Zelle. In der Zieldatei bekomme ich "#BEZUG!" ausgespuckt. Ich habe jetzt angenommen, dass liegt an der der hinterlegten Summe. Vielleicht bin ich bei der Fehlerlösung auf der falschen Spur, wenn bei Euch die reinen Werte übernommen werden. ABER auch das hilft mir ja weiter ! Lieben Dank!
Anzeige
AW: Daten aus geschlossenen Mappen auslesen
09.08.2019 13:33:04
mmat
Hallo Simone,
Zitat:
> Nun habe ich bei beiden Varianten das Problem, dass natürlich die Zellen mit hinterlegten
> Formeln übernommen werden
Ich hab Version 1 getestet, da stehen nur Werte !!!!!!!!
Also weiss ich jetzt nicht, was du eigentlich willst ...
vg, MM
In meinem Blog habe ich eine...
09.08.2019 21:07:14
Case
Hallo, :-)
... Reihe von Beispielen (mit Download) zum Thema auslesen aus geschlossenen Dateien. Vielleicht ist etwas für dich dabei. ;-)
Posts mit dem Label Geschlossen werden angezeigt...
Servus
Case

Anzeige

331 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige