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

Verzeichnis suchen

Verzeichnis suchen
10.11.2005 11:44:54
Toni
Hallo VBA'ler,
beim Öffnen einer Excel-Datei 'A' sollen Zellen aus einer Excel-Datei 'AbsenderDaten.xls' nach 'A' kopiert werden.
Verzeichnis (LABS) und Dateiname (AbsenderDaten.xls) sind festgelegt.
Falls das Verzeichnis in dem sich 'AbsenderDaten.xls' befinden soll nicht vorhanden ist, soll eine Fehlermeldung kommen. Ist das Verzeichnis da, aber die Datei 'AbsenderDaten.xls' nicht, soll ebenfalls eine Fehlermeldung kommen.
sind Verzeichnis und Datei vorhanden, bekommt der Anwender vom Kopiervorgang nichts mit.
Mit der folgenden Sub klappt das soweit:

Private Sub Workbook_Open()
'*         Die Absenderdaten werden in LABS kopiert             *
Call AbsenderDatenKopieren
End Sub

Sub AbsenderDatenKopieren()
Dim verzeichnis As Variant
Dim absenderDatei As Variant
Dim labsDatei As Variant
Dim vorhanden As Boolean
Dim strAdr As Variant
strAdr = "D:\LABS\AbsenderDaten.xls"
verzeichnis = "D:\LABS\"
absenderDatei = "AbsenderDaten.xls"
If Dir(verzeichnis) = "" Then
MsgBox "Das Verzeichnis " & verzeichnis & "existiert nicht." _
& Chr(10) & _
"Es werden keine Absenderdaten in LABS übernommen.", vbExclamation
Else
If Dir(strAdr) "" Then
Application.ScreenUpdating = False
labsDatei = ThisWorkbook.Name
Application.EnableEvents = False
Workbooks.Open (verzeichnis & absenderDatei)
Application.EnableEvents = True
With Workbooks(absenderDatei)
Workbooks(labsDatei).Sheets("Tabelle1").Range("A1").Value = _
.Sheets("Tabelle1").Range("B3").Value
Workbooks(labsDatei).Sheets("Tabelle1").Range("A2").Value = _
.Sheets("Tabelle1").Range("B5").Value
Workbooks(labsDatei).Sheets("Tabelle1").Range("A3").Value = _
.Sheets("Tabelle1").Range("B7").Value
Workbooks(labsDatei).Sheets("Tabelle1").Range("A4").Value = _
.Sheets("Tabelle1").Range("B9").Value
Workbooks(labsDatei).Sheets("Tabelle1").Range("A5").Value = _
.Sheets("Tabelle1").Range("B11").Value
Workbooks(labsDatei).Sheets("Tabelle1").Range("A6").Value = _
.Sheets("Tabelle1").Range("B13").Value
.Close savechanges:=False
Application.ScreenUpdating = True
End With
Else
MsgBox "Die Datei " & absenderDatei _
& Chr(10) & _
"im Verzeichnis " & verzeichnis & " existiert nicht. " _
& Chr(10) & _
"Es werden keine Absenderdaten in LABS übernommen.", vbExclamation
End If
End If
End Sub
Nun zum eigentlichen Problem:
Das Verzeichnis 'LABS' kann sich auf verschiedenen Laufwerken befinden, da es sich um unterschiedliche Rechner handelt.
Zur Prüfung, ob sich das Verzeichnis 'LABS' auf einem der Laufwerke befindet, habe ich meinen Code folgendermaßen umgestellt:
verzeichnisY = "Y:\LABS\"
verzeichnisE = "E:\LABS\"
verzeichnisD = "D:\LABS\"
verzeichnisC = "C:\LABS\"
....
If Dir(verzeichnisY) = "" AND _
Dir(verzeichnisE) = "" AND _
Dir(verzeichnisD) = "" AND _
Dir(verzeichnisC) = "" Then
MsgBox "Es existiert keines der erforderlichen Verzeichnisse. " _
Jetzt bekomme ich Laufzeitfehler 52 "Dateiname oder -Nummer falsch".
E:/ ist in diesem Fall mein CD-Laufwerk. Hier wird gemeckert.
Kann mir vielleicht jemand weiterhelfen?
Eine Lösung mit API kommt wohl nicht in Frage, da dieses Programm auch auf Linux-Rechnern laufen muss (die urspüngliche Version läuft dort schon prima).
Ciao
Toni

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Verzeichnis suchen
10.11.2005 16:13:46
Unbekannter
Mit dem hier kannst du jedes Laufwerk ob vorhanden nach der Datei durchsuchen du musst nur noch die If-Abfrage ändern da du ja mit dem Ergebniss weiterarbeiten möchtest.Da du ja nicht mit API arbeiten kannst musst du die Laufwerke anpassen

Sub suchen()
Dim path(5) As String
path(1) = "c:\Labs\"
path(2) = "a:\Labs\"
path(3) = "d:\Labs\"
path(5) = "e:\Labs\"
path(4) = "f:\Labs\"
For i = 1 To 5
With Application.FileSearch
.LookIn = path(i)
.FileType = msoFileTypeExcelWorkbooks
.Filename = "AbsenderDaten"
.Execute
End With
If Application.FileSearch.FoundFiles.Count = 1 Then
MsgBox Application.FileSearch.FoundFiles.Item(1) 'Das musste für deine Zwecke ändern
End If
Next i
End Sub

Gruß UN1
Anzeige
AW: Verzeichnis suchen
10.11.2005 16:46:29
toni
Hallo UN1,
Ich habe das Problem umschifft.
Der Anwender ist jetzt gezwungen die zu kopierende Datei im gleichen Verzeichnis zu speichern wie die aufrufende Datei.
Damit kann ich den Pfad abfragen (this.workbook.path) und direkt nach der Datei fragen.
Trotzdem vielen Dank für Deine Mühe, so hätte es bestimmt auch geklappt.
Toni
AW: Verzeichnis suchen
10.11.2005 17:03:22
Unbekannter
Mit dem:
MsgBox ActiveWorkbook.Path
p.s. aber wenn sich dein Problem ändern dann schreib es bitte erneut in den Threat rein
Gruß UN1

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige