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

Pfad einmal suchen und diesen speichern

Pfad einmal suchen und diesen speichern
26.02.2004 16:31:24
dieter
Hallo Freunde,
bisher speicher ich ein Blatt in einem neuen Ordner mit folgenden Anweisungen (Auszug):
.
.
ChDir "C:\Eigene Dateien\KW"
ActiveSheet.Copy
ActiveSheet.Name = sWch
sKW = Range("B3") '= KW09
sYY = Range("B2") '= 2004
sYY = Format(Date, "YY")
ActiveWorkbook.SaveAs ("KW" & sKW & "_" & sYY & ".xls") '= KW09_04.xls
ActiveWorkbook.Close
Application.ScreenUpdating = True
End Sub
So weit so gut.Nun wollte ich ChDir... ersetzen z.B. mit der Anweisung
"Application.Dialogs(xlDialogOpen).Show" , um den Ordner "KW" zu finden, wenn dieser (und alle anderen dazu notwendigen Dateien/Ordner) auf einem anderen PC und einem anderen Pfad kopiert wurden.
Der einmal gefundene Pfad sollte gespeichert werden, um diesen beim Speichern eines neuen Blattes nicht wieder suchen zu müssen.Auch sollte die oben erwähnte Anweisung "ActiveWorkbook.SaveAs...." erhalten bleiben.
Meine tagelangen Versuche haben bisher nichts gebracht und der (Kurz-)Urlaub ist auch schon wieder vorbei.(schnief)
Vielen Dank im voraus und Grüße an alle
Dieter

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Pfad einmal suchen und diesen speichern
26.02.2004 16:54:38
Christian Kruse
dFilter = "KW Pfad(*.*), *.*"
pfad = Application.GetOpenFilename(dFilter)
If Pfad = False Then Exit Sub
for x = len(pfad) to 1 step -1
if right(pfad, 1) = "\" then exit for
pfad = left(pfad, x-1)
next x
chdir pfad
AW: Pfad einmal suchen und diesen speichern
26.02.2004 17:57:59
Nepumuk
Hallo Dieter,
speichere den Pfad in der Registry.
So speicherst du ihn:
SaveSetting "Ordner KW", "KW", "Pfad", dein_Pfad
So liest du ihn wieder aus:
dein_Pfad = GetSetting("Ordner KW", "KW", "Pfad")
Nach dem auslesen geht es dann so weiter:
If dein_Pfad <> "" Then
If Dir(dein-Pfad) = "" Then Dialog
Else
Dialog
End if
Die Namen die du für den Eintrag in der Registry verwendest, kannst du natürlich selbst vergeben.
Gruß
Nepumuk
Anzeige
AW: Pfad einmal suchen und diesen speichern
26.02.2004 20:02:47
dieter
Hallo Christian, Hallo Nepumuk,
vielen Dank für eure Hilfe, aber wie ihr an meinem langen Schweigen vielleicht bemerkt habt,ist meine Verwirrung nun perfekt.
zuerst zu Christian:
habe deine Anweisungen eingetippt,weiß aber nicht genau, wo ich sie plazieren soll.Bei der Anweisung "If Pfad = False Then Exit Sub" öffnet sich das Fenster zur Pfadauswahl.Nachdem ich den Ordner "KW" ausgewählt habe, öffnet sich ein neues Fenster,in dem ich unter "Dateiname:" etwas eingeben müsste, z.B. was bei mir unter "ActiveWorkbook.SaveAs ("KW" & sKW & "_" & sYY & ".xls") '= KW09_04.xls" steht.
Frage:Bekomme ich diese Anweisung nicht irgendwie bei dem zweiten geöffneten Fenster unter "Dateiname:" gleich mitangezeigt?
Hallo Nepumuk,soll ich deine Anweisungen nachdem der Pfad mittels der Anweisungen von Christian gefunden wurde, danach eintippen? Muß ich den Ausdruck "Dialog" irgendwie definieren?
Nochmals vielen Dank
dieter
Anzeige
AW: Pfad einmal suchen und diesen speichern
26.02.2004 20:53:21
Nepumuk
Hallo Dieter,
das wäre eine Möglichkeit:

Option Explicit
Private Declare Function SHBrowseForFolder Lib "shell32" (lpbi As InfoT) As Long
Private Declare Function CoTaskMemFree Lib "ole32" (ByVal hMem As Long) As Long
Private Declare Function lstrcat Lib "kernel32" Alias "lstrcatA" (ByVal lpStr1 As String, ByVal lpStr2 As String) As Long
Private Declare Function SHGetPathFromIDList Lib "shell32" (ByVal pList As Long, ByVal lpBuffer As String) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassname As String, ByVal lpWindowName As String) As Long
Private Type InfoT
hwnd As Long
Root As Long
DisplayName As Long
Title As Long
Flags As Long
FName As Long
lParam As Long
Image As Long
End Type
Private Function GetAOrdner() As String
Dim xl As InfoT, IDList As Long, RVal As Long, FolderName As String
With xl
.hwnd = FindWindow("xlmain", vbNullString)
.Title = lstrcat("Bitte wählen Sie das Verzeichnis KW", "")
.Flags = &H1
End With
IDList = SHBrowseForFolder(xl)
If IDList <> 0 Then
FolderName = Space(256)
RVal = SHGetPathFromIDList(IDList, FolderName)
CoTaskMemFree (IDList)
FolderName = Trim(FolderName)
FolderName = Left(FolderName, Len(FolderName) - 1)
End If
GetAOrdner = FolderName
End Function
Public Sub speichern()
Dim strPfad As String
strPfad = GetSetting("Ordner KW", "KW", "Pfad")
Do
If strPfad <> "" Then
If Dir(strPfad, vbDirectory) = "" Then strPfad = GetAOrdner
Else
strPfad = GetAOrdner
End If
If strPfad = "" Then Exit Sub
If Right(strPfad, 2) = "KW" Then Exit Do
If MsgBox("Sie haben nicht den Ordner KW ausgewählt.", 37, "Hinweis") = 2 Then Exit Sub
strPfad = ""
Loop
SaveSetting "Ordner KW", "KW", "Pfad", strPfad
Application.ScreenUpdating = False
ActiveSheet.Copy
ActiveSheet.Name = sWch
ActiveWorkbook.SaveAs (strPfad & "\" & "KW" & Range("B3") & "_" & Format(Date, "YY") & ".xls") '= KW09_04.xls
ActiveWorkbook.Close
Application.ScreenUpdating = True
End Sub


Code eingefügt mit: Excel Code Jeanie
Gruß
Nepumuk
Anzeige
AW: Pfad einmal suchen und diesen speichern
27.02.2004 12:39:17
dieter
Hallo Nepumuk,
vielen vielen Dank für deine Rückantwort und dein Bemühen.
Ich muß erst alles in Ruhe "verdauen" und werde nach einer Pause weitermachen.
Gestern, das war einfach schon zuviel.
so long und beste Grüße
dieter
AW: Pfad einmal suchen und diesen speichern
27.02.2004 12:39:52
dieter
Hallo Nepumuk,
vielen vielen Dank für deine Rückantwort und dein Bemühen.
Ich muß erst alles in Ruhe "verdauen" und werde nach einer Pause weitermachen.
Gestern, das war einfach schon zuviel.
so long und beste Grüße
dieter
AW: Pfad einmal suchen und diesen speichern
27.02.2004 12:40:39
dieter
Hallo Nepumuk,
vielen vielen Dank für deine Rückantwort und dein Bemühen.
Ich muß erst alles in Ruhe "verdauen" und werde nach einer Pause weitermachen.
Gestern, das war einfach schon zuviel.
so long und beste Grüße
dieter
Anzeige

209 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige