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

VBA-Skript für variablen Filenamen

VBA-Skript für variablen Filenamen
04.10.2012 13:55:24
Helmut
Liebe Forenuser,
ich habe eine für mich wichtige Frage:
Ich habe ein zentrales Excel-File (Beispiel.xlsx). Das liegt dieser Frage auch bei.
In dem Excel-File habe ich in der Zelle B3 einen Text stehen. In dem Beispiel ist das "ROTH".
Es gibt auch ein Excel-File, das ROTH.xlsx, heißt. In diesem befindet sich in der Zelle C1 ein Wert. In meinem Beispiel ist das der Wert 12345.
Wenn ich nun in die Zelle B3 des zentralen Excel-Files ROTH schreibe, will ich, dass Excel auf das File ROTH.xlsx zugreift, den Wert aus Zelle C1 ausliest und ins zentrale File in die Zelle D3 einträgt!
So gibt es viele Excel-Files mit Namen, die ich in die Zelle B3 schreiben kann. Ausgelesen soll in dem anderen File immer der Wert aus Zelle C1 der immer ins zentrale File in die Zelle D1 wandern soll.
Im Prinzip geht es also um eine "Variable", die den Namen eines vorhandenen Excel-Files annehmen soll.
Schreibe ich also z.B. BETA in die Zelle B3, dann soll auf das File BETA.xlsx zugegriffen werden! Tabellenblatt und Zelle des Werts bleiben immer gleich!
Gibt es das Excel-File, das ich in die Zelle B3 reinschreibe nicht, dann soll eine Fehlermeldung ausgegeben warden.
Kann man das ohne VBA machen, oder nur mit VBA-Skript?
Kann mir da wer von euch so einen Skript senden, da ich keine Ahnung von VBA habe und auch so nicht so viele Funktionen in Excel beherrsche?
Danke im Voraus und liebe Grüße,
Helmut
https://www.herber.de/bbs/user/81985.xlsx

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ohne VBA
04.10.2012 14:06:49
Sheldon
Hallo Helmut,
ohne VBA geht das mit Indirekt. In Zelle C3: =INDIREKT("'["&B3&".xlsx]Tabelle1'!C1")
Zu beachten:
- Das Tabellenblatt in der Datei muss mit angegeben werden, wie du siehst!
- Funktioniert nur dann, wenn die Datei gleichzeitig mit der 'zentralen Datei' geöffnet ist, ansonsten gibt Indirekt immer einen #BEZUG!-Fehler aus!
Von der VBA-Lösung lasse ich jetzt mal meine Finger, da gibts hier ausgewiesene Experten! Daher lass ich die Frage mal offen.
Gruß
Sheldon

AW: wg. VBA noch offen
04.10.2012 14:08:03
Sheldon
...schrieb 'noch offen', hab aber vergessen auch das Häkchen zu setzen. Ich werde wohl auch nicht jünger...
Gruß
Sheldon

Anzeige
AW: wg. VBA noch offen
04.10.2012 15:00:09
Helmut
...noch offen

VBA jetzt zu...
04.10.2012 15:48:01
Case
Hallo, :-)
habe das mal in meinen Blog mit aufgenommen. Dort kannst Du auch eine Beispieldatei downloaden. Hier der Code, der in das Klassenmodul der Tabelle in der zentralen Datei gehört:
Option Explicit
' Aus der Tabelle wird ausgelesen
Const strSheet As String = "Tabelle1"
' Diese Zelle wird ausgelesen
Const strCell As String = "C1"
' Das ist die Endung der auszulesenden Datei
Const strEx As String = ".xlsx"
Private Sub Worksheet_Change(ByVal Target As Range)
Dim strPath As String
Dim strFile As String
On Error GoTo Fin
Application.EnableEvents = False
strPath = ThisWorkbook.Path & Application.PathSeparator
If Not Target.Count > 1 Then
If Not Intersect(Target, Range("B3")) Is Nothing Then
If Trim(Target.Value)  "" Then
If Dir(strPath & Trim(Target.Value) & strEx)  "" Then
With Me.Range("D3")
.Formula = "='" & strPath & _
"[" & Target.Value & strEx & "]" & _
strSheet & "'!" & strCell
.Value = .Value
End With
Else
MsgBox "Datei nicht vorhanden!"
Me.Range("B3").ClearContents
Me.Range("D3").ClearContents
End If
Else
Me.Range("D3").ClearContents
End If
End If
End If
Fin:
Application.EnableEvents = True
If Err.Number  0 Then MsgBox "Fehler: " & _
Err.Number & " " & Err.Description
End Sub
Servus
Case

Anzeige
AW: VBA jetzt zu...
05.10.2012 13:17:34
Helmut
Hi,
danke dir! Nur bei
With Me.Range("D3")
kommt ein Fehler beim Kompilieren bei mir. "Methode oder Datenobjekt nicht gefunden"
Was ist das?
LG, Helmut

AW: VBA jetzt zu...
05.10.2012 14:00:28
Helmut
Hi,
es klappt!!!!
Super, danke dir!!
LG, Helmut

AW: VBA jetzt zu...
05.10.2012 14:13:52
Helmut
Hi,
doch noch eine letzte Frage:
Wie ändert sich der Code, wenn die Datei, aus der ich den Wert auslese auf einem Netzlaufwerk liegt (z.B. N:\Test\Roth.xlsx), bzw. eben prinzipiell auf einem anderen Laufwerk, als die zentrale Datei.
GlG
Helmut

AW: VBA jetzt zu...
05.10.2012 21:39:15
Case
Hallo, :-)
diese Zeile muss geändert werden:
strPath = ThisWorkbook.Path & Application.PathSeparator
nach z. B.:
strPath = "C:\Temp\
Oder eben einen anderen Ordner. Den abschließenden Backslash nicht vergessen, oder im Code abfragen und gegebenenfalls setzen.
Sind die Dateien in unterschiedlichen Ordnern muss angepasst werden.
Servus
Case

Anzeige
AW: ohne VBA
04.10.2012 14:23:40
Helmut
Hallo Sheldon,
danke dir sehr! Ich versuche es mal so und vielleicht gibt es ja auch noch einen VBA-Code.
Aber mit deiner Lösung ist mir vorerst schon mal sehr geholfen!!
LG,
Helmut

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige