Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
792to796
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
792to796
792to796
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Zugriff auf geschlossene Dateien

Zugriff auf geschlossene Dateien
23.08.2006 16:28:29
Oliver
Hallo zusammen,
ich möchte mittels einer Formel auf eine geschlossene Excel-Datei zugreifen. Das ist grundsätzlich kein größeres Problem:
='U:\Temp\[Test.xls]Tabelle1'!A1
Schwierig wird es dann, wenn der Pfad bzw. Projektname aus anderen Zelleninhalten zusammengesetzt werden soll. Dies funktioniert weder mit noch ohne INDIREKT:
=INDIREKT("'U:\Temp\[" & B3 & "]Deckblatt'!A1")
Auch der gelesene Trick, das erste Hochkomma mittels GLÄTTEN zu integrieren, hilft nichts:
=INDIREKT(GLÄTTEN(" ' ") & "U:\Temp\[" & B3 & "]Deckblatt'!A1")
Habt ihr eine Idee oder gibt es hierfür keine Lösung (ohne VBA)?
Danke
Oliver

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zugriff auf geschlossene Dateien
23.08.2006 16:29:56
Gerd
Hi,
Indirekt() verlangt eine geöffnete Quelldatei.
mfg Gerd
AW: Zugriff auf geschlossene Dateien
23.08.2006 16:30:32
Eule
Hi Oliver
INDIREKT funktioniert nur mit offenen Dateien!
Gruss Eule
AW: Zugriff auf geschlossene Dateien
23.08.2006 16:35:46
c0bRa
hio...
evtl. hilft dir das hier weiter, ist aber mit VBA:
Indirekt()-Fkt. für geschlossenen Dateien
Rückmeldung nicht vergessen...
c0bRa
I hacked 127.0.0.1
AW: Zugriff auf geschlossene Dateien
23.08.2006 16:53:02
Oliver
Danke zusammen,
immerhin kann ich mir nun das weitere Experimentieren mit INDIREKT sparen...
Eine andere Lösung ohne VBA gibt es nicht?
Die gepostete VBA-Lösung muss ich erst von zu hause aus testen, da dies im Büro nicht geht.
Oliver
Anzeige
AW: Zugriff auf geschlossene Dateien VBA
23.08.2006 16:54:25
UweD
Hallo
per VBA ginge es so..

Sub test()
'Wert lesen aus geschlossener Mappe
Dim wb As Workbook, Z$, ok
Set wb = GetObject("C:\Temp\test.xls")
Z = Range("B3").Value ' das wäre dein "Indirekt"
ok = wb.Worksheets("Tabelle1").Range(Z)
If ok = "" Then
MsgBox ("Leer")
Else
MsgBox (ok)
End If
wb.Close SaveChanges:=True
End Sub

Gruß UweD
(Rückmeldung wäre schön)
AW: Zugriff auf geschlossene Dateien VBA
24.08.2006 00:12:50
bst
Auch Hi,
geschlossen ?
cu, Bernd
--
Option Explicit

Sub test()
    Dim i%
    'Wert lesen aus geschlossener Mappe
    Dim wb As Workbook, Z$, ok
    Set wb = GetObject("C:\Temp\test.xls")
    
    For i = 1 To Workbooks.Count
        Debug.Print i, Workbooks(i).FullName
    Next
    
    Z = Range("B3").Value ' das wäre dein "Indirekt"
    ok = wb.Worksheets("Tabelle1").Range(Z)
    
    If ok = "" Then
        MsgBox ("Leer")
    Else
        MsgBox (ok)
    End If
    
    wb.Close SaveChanges:=True
End Sub

Anzeige
AW: Zugriff auf geschlossene Dateien VBA
25.08.2006 02:15:24
Daniel Eisert
Hallo,
nicht ganz, auch mit GetOjekt wird die Datei geöffnet.
im Gegensatz zu Workbooks.Open bleibt sie allerdings für den User unsichtbar, da das Fenster ausgeblendet wird. (kann man aber einblenden)
Für den weiteren Makroablauf ist halt zu beachten daß das ActiveWorkbook nicht auf die neue Datei wechselt.
Also schon eine interessante Funktion, aber nicht die Lösung für das Problem.
Gruß, Daniel
AW: Zugriff auf geschlossene Dateien VBA
25.08.2006 08:53:32
bst
Morgen Daniel,
ja, das meinte ich damit ;-)
Meiner bescheidenen Meinung nach gibt es überhaupt keine Möglichkeit aus einer Datei Daten zu lesen OHNE diese vorher zu öffnen. Entweder explizit, indem man das selber tut via WorkBooks.Open, GetObject, ... Oder halt implizit indem man das Excel oder VBA im Hintergrund tun läßt - ggf. ohne das in Excel/VBA zu bemerken - via INDIREKT, ExecuteExcel4Macro, ADO, ...
Die M.E. 'bessere' Frage wäre hier:
Welches ist der schnellste Weg Daten aus einer anderen - zur Zeit noch nicht geöffneten - Excel-Datei zu lesen ?
cu, Bernd
Anzeige
AW: Zugriff auf geschlossene Dateien VBA
25.08.2006 11:03:01
David
Hallo,
ich habe genau das gleiche Problem mit dem Indirekt-Öffnen (gut zu wissen, dass das nur mit bereits geöffneten Dateien geht) und würde gerne den gleichen Code verwenden.
Leider habe ich absolut keine Ahnung von Makros.
Kann mir einer sagen, wo (oder ob) in dem Makro die Zellbereiche definiert werden, die kopiert werden und aus welchem Tabellenblatt die Zellen kopiert werden?
Ich möchte folgendes machen:
- Ich habe ca. 30 identisch aufgebaute Excel-Dateien in 30 Unterordnern eines Verzeichnisses.
- In jeder Datei habe ich ein Blatt mit Messwerten (Zellbereich A17 bis G35, in diesem Zellbereich sind aber auch Überschriften u.ä. enthalten – macht aber nix wenn das mitkopiert wird).
- In meinem Hauptverzeichnis will ich eine Übersichts-Excel mit einem Tabellenblatt in dem ich dynamisch die Messwerte in einer Tabelle darstellen will. Ich brauche eine Funktion/Makro, das mir die Messwerte aus den (ungeöffneten) Unterordnern in meine Übersichts-Excel kopiert.
- Ich habe eine Dropdownliste mit allen Dateien aus denen ich wählen kann, und mir eine Funktion gebastelt, die mir einen Textstring mit dem Pfad zu Datei und zum gewünschten Blatt liefert, aber der Indirekt-Befehl kann die Datei ja nicht öffnen.
Könnte man ein Makro machen, das alles für mich erledigt, jedes Mal, wenn ich eine Quelle aus der Dropdownliste gewählt habe?
Oder (vielleicht noch viel einfacher) ein Makro (durch einen Aktualisieren-Button gestartet), das die Datei öffnet, den Indirekt-Befehl ausführt und die Datei wieder schließt. Damit der Indirekt-Befehl die Daten rüberkopiert während die Datei geöffnet war (wenn das funktioniert?)
Sorry für den langen Text, aber ich wollte halbwegs eindeutig sein.
Vielen Dank für alle Antworten.
David
Anzeige
AW: Zugriff auf geschlossene Dateien VBA
25.08.2006 12:16:11
bst
Hallo David,
versuch's vielleicht mal so:
- in A1 schreibe den Pfad zur Quelldatei, z.B. E:\TEST\
- in A2 schreibe den Namen der Quelldatei, z.B. source.xls
- benutze in Deinen Formeln (weiterhin) Indirekt mit A2, z.B.C1: =INDIREKT("[" & A2 & "]Tabelle1!$A$1" )
- erstelle einen Button aus Steuerelemente und gib ihm den Namen cmdUpdate
- tu sowas in das Klassenmodul Deiner Tabelle
Wenn es 'vollautomatisch' gehen soll, nimm zusätzlich ein Worksheet_Change auf, s.u., sonst wirf das einfach raus. Das Teil öffnet die Quelldatei, berechnet neu und schließt sie dann wieder. Könnte eigentlich ausreichen.
HTH, Bernd
--
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("A1:A2")) Is Nothing Then
        Application.EnableEvents = False
        Call cmdUpdate_Click
        Application.EnableEvents = True
    End If
End Sub

Private Sub cmdUpdate_Click()
    Dim strDataFile As String, strDataPath As String
    
    strDataPath = Range("A1")
    strDataFile = Range("A2")
    If strDataFile <> "" And strDataPath <> "" Then
        If Not WorkBookExists(strDataFile) Then
            If Right(strDataPath, 1) <> "\" Then strDataPath = strDataPath & "\"
            If Dir(strDataPath & strDataFile) <> "" Then
                Workbooks.Open strDataPath & strDataFile, ReadOnly:=True
                Me.Calculate
                ActiveWorkbook.Close False
            Else
                MsgBox "Datei nicht gefunden", vbCritical, strDataPath & strDataFile
            End If
        End If
    End If
End Sub

Private Function WorkBookExists(ByVal strName As String) As Boolean
    Dim wb As Workbook
    
    strName = UCase(strName)
    WorkBookExists = True
    
    For Each wb In Workbooks
        If UCase(wb.Name) = strName Then Exit Function
    Next
    WorkBookExists = False
End Function



Anzeige
AW: Zugriff auf geschlossene Dateien VBA
25.08.2006 13:53:51
Hier eine Testdatei von mir
Hallo Bernd,
Danke für Deinen Vorschlag, ich habs mal ausprobiert, aber ohne Wirkung.
Liegt evtl. daran, dass ich eine englische Office-Version habe - Probleme mit Anführungszeichen, usw?
Ich habe mal eine abgespeckte Version meiner Datei ohne (Makro und Commandbuttons) erstellt und angehängt. Das Blatt in dem ich arbeite und in das die Werte kopiert werden sollen heißt "Datenbezug".
Die Dateipfade sind leider extrem lang. Ich habe fleißig kommentiert, was ich zu erreichen versuche, alle Kommentare sind fett/kursiv
https://www.herber.de/bbs/user/36149.xls
Falls Du versuchen kannst, Dein Makro so anzupassen, dass es den gelb hinterlegten Bereich aus der Zieldatei kopiert wäre das sehr nett. Das Ziel-Tabellenblatt heißt immer "Stromaufnahme Aug06".
Der Teilpfad wird in A10, der Dateiname in B10 und der komplette Pfad in A11 erstellt.
Ich war schon mächtig stolz, es so weit mit Bordmitteln gebracht zu haben (ohne VBA). Wenn nur dieses blöde Indirekt funktionieren würde.
Anzeige
AW: Zugriff auf geschlossene Dateien VBA
25.08.2006 15:12:09
bst
Hallo David,
so sollte es mal prinzipiell funktionieren. Siehe die grünen Zellen.
Allerdings gibt's da noch ein ätzendes Problem. Sobald irgendeine Zelle geändert wird, verschwinden die INDIREKT Daten wieder. Ich überlege mir was besseres...
Siehe: https://www.herber.de/bbs/user/36154.xls
cu, Bernd
AW: Zugriff auf geschlossene Dateien VBA
25.08.2006 15:32:56
David
Hi Bernd,
ich schätze ich werde mich noch ein bisschen mehr mit VBA auseinandersetzten müssen, bevor ich kapiere, was das passiert (oder nicht passiert).
Dennoch Danke für Deine Hilfe, ich meld mich nächste Woche mal wieder.
Schönes Wochenende
David
Anzeige
AW: Zugriff auf geschlossene Dateien VBA
25.08.2006 15:38:24
bst
Nochmals Hallo,
so sollte es nun aber gehen, kopiert werden dabei alle als SRC_xxxx definierte Namen.
Es wird jeweils aus dem entsprechenden Bereich kopiert, wenn Du also SRC_xyz als H1:H2 definiertst, so werden die Werte der Zellen H1 und H2 aus der Datentabelle in das Tabellenblatt Datenbezug umkopiert. Die Anzahl der SRC_'s ist egal, ihre Bereichsgröße auch.
Siehe die gefärbten Zellen. Und schau auch unter Einfügen-Namen nach. Und:
- in A1 den kompletten Pfad
- in A2 den Dateinamen
- in A3 den Namen der Quell-Tabelle
eintragen.

Die Datei https://www.herber.de/bbs/user/36157.xls wurde aus Datenschutzgründen gelöscht

cu, Bernd
Anzeige
Super! Funktioniert genial. Danke!
28.08.2006 10:02:53
David
Hallo Bernd,
habe das Makro und den Command-Button noch auf das Blatt mit dem Diagramm kopiert und die Addresszellen ebenfalls (Code entsprechend geändert).
Funktioniert bestens.
Vielen Dank nochmal. Echt ein Spitzensupport.
David
OwT: Bitteschön und einen schönen Tag noch
28.08.2006 10:35:36
bst
.

276 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige