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

Filexist - für gesamten Pfad

Filexist - für gesamten Pfad
30.01.2008 12:43:00
Uwe
Mahlzeit und Guten Tag die Damen und Herren,
Meine Exceldatei speichert sich selbst unter einem Dateinamen, der nicht freiwählbar ist, sich jedoch durch die eingebene Auftragsnummer definiert. Jetzt war mein Problem, was bereits gelöst wurde, dass wenn er bei der Speicherung feststellt, dass die Datei bereits vorhanden ist, die Windwos typische Nachfrage gibt, ob die Datei überschrieben werden soll. Wird nun auf nein geklickt, dann erscheint eine Fehlermeldung von VBA, dass die 'SaveAs' Methode fehlgeschlagen ist (klar, denn er konnte sie ja nicht ausführen). Nun wird die Datei unter einem bestimmten, festlegbaren Pfad gespeichert! Allersdings nur, wenn der Ordner in dem gespeichert werden soll auch existiert. Anderenfalls gibt es wieder eine Fehlermeldung. Nun meine Frage:
Wie kann ich automatisch Ordner anlegen oder wenigstens überprüfen, ob der Pfad überhaupt existiert?
MfG Uwe

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Filexist - für gesamten Pfad
30.01.2008 12:49:23
Josef
Hallo Uwe,
' **********************************************************************
' Modul: Modul2 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit
Private Declare Function MakeSureDirectoryPathExists Lib "imagehlp.dll" (ByVal lpPath As String) As Long

Sub zz()
Dim strpath

strpath = "C:\Test\Test\Test\"

MakeSureDirectoryPathExists (strpath)
End Sub


Gruß Sepp



Anzeige
AW: Filexist - für gesamten Pfad
30.01.2008 12:56:00
Mag
... ergänzend zu Letzterem:

If Dir("c:\temp\")  "" Then MsgBox "Ja" Else MsgBox "Nein"


Gruss

AW: Filexist - für gesamten Pfad
30.01.2008 13:22:00
Uwe
Hi, Danke für die schnellen Antworten!
stelle ich damit sicher, ob er existiert oder schaffe ich Ihn neu? wie kann ich das Windows eigene Fenster zur Pfadwahl öffnen? Also man klickt sich durch die Dateistruktur durch und per Klick auf OK oder so, wird der ausgewählte Pfad in einer Variable gespeichert...
MfG Uwe

AW: Filexist - für gesamten Pfad
30.01.2008 13:31:00
Josef
Hallo Uwe,
bei meinem Code wird der Pfad, sofern nicht vorhanden, angelegt.
Wenn du einen Dialog zur Auswahl willst, dann brauchst du doch die Existenz nicht überprüfen, da du ja nur ein bereits bestehendes Verzeichnis auswählen kannst!

Gruß Sepp



Anzeige
AW: Filexist - für gesamten Pfad
30.01.2008 13:45:00
Mag
... Beispiel:

Sub ttt()
Dim strVerzeichnis$
Dim var As Variant
Dim sFiles As String
strVerzeichnis = "c:\test\"
'Überprüfen ob Verzeichnis vorhanden
If Dir(strVerzeichnis, vbDirectory)  "" Then
'Laufwerk wechseln
ChDrive (Left(strVerzeichnis, 2))
'Verzeichnis wechseln
ChDir (strVerzeichnis)
'Datei wählen
sFiles = "TXT Files (*.TXT) , *.TXT"
var = Application.GetOpenFilename(sFiles)
If var = False Then Exit Sub
MsgBox var
Else
Exit Sub
End If
End Sub


AW: Filexist - für gesamten Pfad
30.01.2008 13:55:00
Uwe
Hi
sorry, aber irgendwie habe ich ein Brett vorm Kopf gerade...verstehe die Befehle nicht...wo kommt chdrive her und was bedeutet es? kannst du die Befehle kurz und knapp entschlüsseln?
MfG Uwe

Anzeige
AW: Filexist - für gesamten Pfad
30.01.2008 14:04:00
Mag
Hi,
naja, dies erklären die Kommentare; alternativ die Hilfe-Funktion von Excel.
Hier als Function:

Option Explicit
Sub Test()
Dim sFile As String
sFile = DateiÖffnen("u:\wzm\haffner", "TXT Files (*.TXT) , *.TXT")
If sFile  "" Then MsgBox sFile Else MsgBox "Abbruch"
End Sub
Function DateiÖffnen(sPfad As String, Extension As String) As String
Dim var As Variant
'Überprüfen ob Verzeichnis vorhanden
If Dir(sPfad, vbDirectory)  "" Then
'Laufwerk wechseln
ChDrive (Left(sPfad, 2))
'Verzeichnis wechseln
ChDir (sPfad)
'Datei wählen
var = Application.GetOpenFilename(Extension)
If var = False Then Exit Function
DateiÖffnen = var
End If
End Function


Gruss

Anzeige
AW: Filexist - für gesamten Pfad
30.01.2008 14:11:37
Mag
Weiteres Beispiel für Extension:

"txt Files (*.txt) , *.txt,Alle Dateien (*.*) , *.*"


Gruss

AW: Filexist - für gesamten Pfad
30.01.2008 14:36:00
Mag
... oder speichern:

Option Explicit
Sub TestÖffnen()
Dim sFile As String
sFile = DateiÖffnen("u:\wzm\haffner", "txt Files (*.txt) , *.txt,Alle Dateien (*.*) , *.*")
If sFile  "" Then MsgBox sFile Else MsgBox "Abbruch"
End Sub
Sub TestSpeichern()
Dim sFile As String
sFile = DateiSpeichern("u:\wzm\haffner", "txt Files (*.txt) , *.txt")
If sFile  "" Then MsgBox sFile Else MsgBox "Abbruch"
End Sub
Function DateiÖffnen(sPfad As String, Extension As String) As String
Dim var As Variant
'Überprüfen ob Verzeichnis vorhanden
If Dir(sPfad, vbDirectory)  "" Then
'Laufwerk wechseln
ChDrive (Left(sPfad, 2))
'Verzeichnis wechseln
ChDir (sPfad)
'Datei wählen
var = Application.GetOpenFilename(fileFilter:=Extension)
If var = False Then Exit Function
DateiÖffnen = var
End If
End Function
Function DateiSpeichern(sPfad As String, Extension As String) As String
Dim var As Variant
'Überprüfen ob Verzeichnis vorhanden
If Dir(sPfad, vbDirectory)  "" Then
'Laufwerk wechseln
ChDrive (Left(sPfad, 2))
'Verzeichnis wechseln
ChDir (sPfad)
'Datei wählen
var = Application.GetSaveAsFilename(fileFilter:=Extension, InitialFilename:="User")
If var = False Then Exit Function
DateiSpeichern = var
End If
End Function


Gruss

Anzeige
AW: Filexist - für gesamten Pfad
30.01.2008 15:28:40
Uwe
hmmm
das Problem ist, dass ich nur den Pfad ohne die Datei benötige. die Variable, die den Stringe enthält soll also nicht "C:\produktion\managing.xls" heissen, sondern "C:\produktion\"
weisst du, was ich meine? Der Dateiname wird dann durch die zuvor eingegebene Auftragsnummer bestimmt!
Abfragen, ob das Verzeichnis überhaupt vorhanden ist, kann ich mit:
if Dir(stringzumpfad) "" then
MsgBox "Juhuu... klappt"
else:
MsgBox "Mist! Wieder nicht"
end if
Danke, danke danke

AW: Filexist - für gesamten Pfad
30.01.2008 15:58:17
Knut
Hi,
if Dir(stringzumpfad) "" then
Damit kanns du dateien prüfen, für Ordner mus es so aussehen:
if Dir(stringzumpfad, 16) "" then
ist aber auch nicht ganz wasserdicht.
Für Ordner/Pfad-Auswahl kuxt du in die Recherche oder in die Hilfe unter Filedialog.
mfg Knut

Anzeige
AW: Filexist - für gesamten Pfad
30.01.2008 16:56:40
Mag
Aus Archiv:

Option Explicit
Public Type BROWSEINFO
hOwner As Long
pidlRoot As Long
pszDisplayName As String
lpszTitle As String
ulFlags As Long
lpfn As Long
lParam As Long
iImage As Long
End Type
Declare Function SHGetPathFromIDList Lib "SHELL32.DLL" _
Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long
Declare Function SHBrowseForFolder Lib "SHELL32.DLL" _
Alias "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As Long
Sub Test()
Dim sPfad As String
sPfad = GetDirectory("Wählen Sie ein Verzeichnis aus:")
If sPfad  "" Then MsgBox sPfad Else MsgBox "Abbruch"
End Sub
Function GetDirectory(Msg) As String
Dim myInfo As BROWSEINFO
Dim myPath As String
Dim Root As Long, ID As Long, pos As Integer
With myInfo
.pidlRoot = 0&
.lpszTitle = Msg
.ulFlags = &H1
End With
ID = SHBrowseForFolder(myInfo)
myPath = Space$(512)
Root = SHGetPathFromIDList(ByVal ID, ByVal myPath)
If Root Then
pos = InStr(myPath, Chr$(0))
GetDirectory = Left(myPath, pos - 1)
Else
GetDirectory = ""
End If
End Function


Gruss

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige