Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: GetValue ohne Blattnamen?

GetValue ohne Blattnamen?
27.11.2006 19:36:37
Rainer
Hallo Excel User,
mit der Tabellenfunktion Gleich z.B.
='C:\Dokumente und Einstellungen\Rainer\Eigene Dateien\Test.xls'!Name
ist der Zugriff auf einen globalen Namen einer geschlossenen Datei auch ohne Angabe des Blattnamens möglich.
Für die Funktion GetValue sind 4 Argumente
path, file, sheet und ref erforderlich.
Gibt es eine Möglichkeit auch mit der GetValue Funktion auf einen globalen Namen einer geschlossenen Datei zuzugreifen ohne Angabe des Blattnamens?
Schon mal vielen Dank für eure Mühe!
Gruß Rainer
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: GetValue ohne Blattnamen?
27.11.2006 20:35:03
Herbert
Hi,
was soll GetValue sein, eine UDF?
mfg Herbert
AW: GetValue ohne Blattnamen?
27.11.2006 20:40:47
Reinhard
Hallo Herbert,
möglicherwise meint Rainer die nachfolgende Funktion aus dem Internet.
Gruß
Reinhard
Ev. könnte dir die folgende Funktion weiterhelfen, die allerdings nur aus
VBA heraus funktioniert. Du müsstest also deine Mappe 'umbauen' und z.B.
mit dem Worksheet_Change()-Ereignis arbeiten um die Werte zu holen.
Die unten noch angehängte

Sub zeigt ein Beispiel des Aufrufs.
Public 

Function GetValue(path$, file$, sheet$, range_ref$)
'Holt einen Wert aus einer _geschlossenen_ Arbeitsmappe
'Nur in VBA zu gebrauchen; nicht aus einer Tabellenzelle heraus
'© John Walkenbach / Übersetzt von Thomas Ramel
'Die GetValue-Funktion, benötigt die vier unten angeführten Arugmente:
'path:  Das Laufwerk und den Pfad der geschlossenen Datei (z.B. "C:\Daten")
'file:  Der Dateiname der Arbeitsmappe (z.B. "MeineDatei.xls")
'sheet: Der Name des TabellenblattesThe worksheet name (z.B. "Tabelle1")
'ref:   Der Zellbezug (z.B. "A1")
Dim arg             As String
'Sicherstellen, dass die Datei exisiert
If Right(path, 1) <> "\" Then path = path & "\"
If Dir(path & file) = "" Then
GetValue = "Datei nicht gefunden"
Exit Function
End If
'Den Aufruf-String zusammenstellen
arg = "'" & path & "[" & file & "]" & sheet & "'!" & _
Range(range_ref).Range("A1").Address(, , xlR1C1)
'Ausführen des XL4-Makros
GetValue = ExecuteExcel4Macro(arg)
End Function

Public

Sub HoleWert()
Dim rngZelle        As Range
Application.ScreenUpdating = False
For Each rngZelle In ActiveSheet.Range("A1:C10")
rngZelle = GetValue("\\server\Pfad\", "Dateiname.xls", _
"Tabelle1", rngZelle.Address)
Next rngZelle
Application.ScreenUpdating = True
End Sub

Mit freundlichen Grüssen
Thomas Ramel
--
- MVP für Microsoft-Excel -
[Win XP Pro SP-2 / xl2000 SP-3]
Anzeige
AW: GetValue ohne Blattnamen?
27.11.2006 20:43:15
Rainer
Hallo Herbert,
GetValue ist eine VBA Funktion um Inhalte aus geschlossenen Dateien auszulesen.
mfg Rainer
AW: GetValue ohne Blattnamen?
27.11.2006 20:47:26
Reinhard
Hi Rainer,
UDF=user defined function, also keine eingebaute VBa-Funktion.
Gruß
Reinhard
AW: GetValue ohne Blattnamen?
27.11.2006 23:32:21
Detlef
Wenn du die Funktion benutzen willst, müssen die Argumente wie gefordert angegeben werden.
mfg Detlef
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

GetValue ohne Blattnamen in Excel nutzen


Schritt-für-Schritt-Anleitung

Um die Funktion GetValue in VBA zu nutzen, um Werte aus geschlossenen Excel-Dateien auszulesen, gehe wie folgt vor:

  1. VBA-Editor öffnen: Drücke Alt + F11, um den VBA-Editor zu öffnen.

  2. Modul erstellen: Klicke im Projekt-Explorer mit der rechten Maustaste auf „VBAProject (DeinWorkbookName)“ und wähle „Einfügen“ > „Modul“.

  3. Code einfügen: Kopiere den folgenden Code in das neue Modul:

    Public Function GetValue(path As String, file As String, sheet As String, range_ref As String)
       ' Holt einen Wert aus einer geschlossenen Arbeitsmappe
       Dim arg As String
       If Right(path, 1) <> "\" Then path = path & "\"
       If Dir(path & file) = "" Then
           GetValue = "Datei nicht gefunden"
           Exit Function
       End If
       arg = "'" & path & "[" & file & "]" & sheet & "'!" & _
             Range(range_ref).Range("A1").Address(, , xlR1C1)
       GetValue = ExecuteExcel4Macro(arg)
    End Function
    
    Public Sub HoleWert()
       Dim rngZelle As Range
       Application.ScreenUpdating = False
       For Each rngZelle In ActiveSheet.Range("A1:C10")
           rngZelle = GetValue("\\server\Pfad\", "Dateiname.xls", "Tabelle1", rngZelle.Address)
       Next rngZelle
       Application.ScreenUpdating = True
    End Sub
  4. Funktion nutzen: Du kannst nun die Funktion GetValue innerhalb einer Subroutine aufrufen, um Werte aus der geschlossenen Datei zu extrahieren.


Häufige Fehler und Lösungen

  • Fehler: "Datei nicht gefunden"
    Lösung: Überprüfe den angegebenen Pfad und den Dateinamen. Stelle sicher, dass die Datei tatsächlich vorhanden ist.

  • Fehler bei der Argumentübergabe
    Lösung: Achte darauf, dass alle vier Argumente (path, file, sheet, range_ref) korrekt und im richtigen Format übergeben werden.

  • Excel reagiert nicht
    Lösung: Reduziere die Anzahl der Zellbezüge oder teile die Funktion in mehrere kleinere Funktionen auf.


Alternative Methoden

Falls Du GetValue ohne Angabe eines Blattnamens verwenden möchtest, könntest Du auch die INDIREKT-Funktion in Excel verwenden, um auf einen globalen Namen zuzugreifen. Leider funktioniert INDIREKT nur mit geöffneten Arbeitsmappen.

Eine andere Möglichkeit ist, das Excel-Datenimport-Tool zu verwenden, um Daten aus einer geschlossenen Datei zu importieren, ohne die GetValue vba Funktion zu verwenden.


Praktische Beispiele

Hier sind einige Beispiele, wie Du die GetValue-Funktion in Deiner Arbeitsmappe verwenden kannst:

  1. Wert aus einer Zelle holen:

    Dim wert As Variant
    wert = GetValue("C:\Daten\", "Beispiel.xls", "Tabelle1", "A1")
    MsgBox wert
  2. Werte in einem Bereich auslesen:

    Sub WerteAuslesen()
       Dim rng As Range
       Set rng = Range("A1:A10")
       For Each Zelle In rng
           Zelle.Value = GetValue("C:\Daten\", "Beispiel.xls", "Tabelle1", Zelle.Address)
       Next Zelle
    End Sub

Tipps für Profis

  • Nutze Option Explicit am Anfang Deines Moduls, um sicherzustellen, dass alle Variablen deklariert sind. Das hilft, Fehler zu vermeiden.
  • Führe regelmäßig eine Fehlerbehandlung ein, besonders wenn Du mit externen Dateien arbeitest. Verwende On Error GoTo für eine saubere Fehlerbehandlung.
  • Halte Deine Funktionen modular und gut dokumentiert, um die Wartbarkeit Deines Codes zu erhöhen.

FAQ: Häufige Fragen

1. Was ist GetValue in Excel?
GetValue ist eine benutzerdefinierte Funktion (UDF), die in VBA geschrieben ist, um Daten aus geschlossenen Excel-Dateien auszulesen.

2. Kann ich GetValue in einer Zelle verwenden?
Nein, GetValue kann nur innerhalb von VBA aufgerufen werden, nicht direkt in einer Excel-Zelle.

3. Welche Argumente benötigt die GetValue-Funktion?
Die Funktion benötigt vier Argumente: path, file, sheet und range_ref.

4. Wie kann ich auf einen globalen Namen ohne Blattnamen zugreifen?
Aktuell ist dies mit der GetValue-Funktion nicht möglich. Du kannst jedoch alternative Methoden wie die INDIREKT-Funktion in Betracht ziehen, wenn die Datei geöffnet ist.

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