Live-Forum - Die aktuellen Beiträge
Datum
Titel
18.04.2024 18:04:29
18.04.2024 16:33:24
Anzeige
Archiv - Navigation
1432to1436
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
Inhaltsverzeichnis

ThisWorkbook.Path

ThisWorkbook.Path
27.06.2015 10:05:30
Paul

Hallo,
ich habe Probleme mit einem Makro das ich geschrieben habe. Es erstellt aus meiner Dienstplantabelle heraus eine CSV-Datei. Nun möchte ich das diese Datei im gleichen Ordner wie die Ursprungsdatei gespeichert wird. Da die Dienstplatabelle einige Kollegen nutzen die die Tabelle an unterschiedlichen Orten und unter unterschiedlichen Namen speichern, kann ich dem Makro keine vordefinierten Daten liefern. Ich hatte nämlich einige Lösungen im Internet gefunden, welche sich aber entweder auf einen festen Pfad oder auf einen festen Tabellennamen beziehen. Nun brauche ich also einen Vorgang wodurch Excel sich den Pfad der aktiven Tabelle merkt bevor die neue Tabelle erstellt wird und ihn dann als Speicherort verwendet. Auch wenn das nicht soviel hilft habe ich mal das Makro beigefügt. Die Tabelle ist leider zu groß um sie hier hochzuladen.
Vielen Dank für eure Hilfe!
Paul.

Sub CSV()
Application.ScreenUpdating = False
ActiveWorkbook.Unprotect "123"
Sheets("Export").Select
Sheets("ExportCSV").Visible = True
Sheets("ExportCSV").Unprotect Password:="123"
Sheets("Data5").Visible = True
Sheets("Data5").Unprotect Password:="123"
Sheets("Data5").Select
Range(Sheets("Export").Range("S3")).Copy
Range("A1").Select
Sheets("ExportCSV").Select
Range("B2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
ActiveWorkbook.Worksheets("ExportCSV").ListObjects("Tabelle2").Sort.SortFields. _
Clear
ActiveWorkbook.Worksheets("ExportCSV").ListObjects("Tabelle2").Sort.SortFields. _
Add Key:=Range("Tabelle2[[#All],[Start Date]]"), SortOn:=xlSortOnValues, _
Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("ExportCSV").ListObjects("Tabelle2").Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Sheets("Data5").Visible = False
Sheets("ExportCSV").Select
Sheets("ExportCSV").Copy
ActiveWorkbook.Date1904 = True
ChDir ThisWorkbook.Path
ActiveWorkbook.SaveAs Filename:=Range("A2").Value, _
FileFormat:=xlCSV, CreateBackup:=False
ActiveWorkbook.Save
ActiveWindow.Close
Sheets("ExportCSV").Select
Sheets("ExportCSV").Visible = False
Sheets("Export").Select
ActiveWorkbook.Protect Password:="123", _
Structure:=True, Windows:=False
Application.ScreenUpdating = True
End Sub

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

Betreff
Datum
Anwender
Anzeige
AW: ThisWorkbook.Path
27.06.2015 10:11:32
Hajo_Zi
benutze
ActiveWorkbook.Path
Du möchtest es ja vom Aktiven haben.

AW: ThisWorkbook.Path
27.06.2015 10:16:33
Paul
Aber sobald ich aus der alten eine neue Tabelle erstellt habe ist die ja dann die Aktive. Und ungespeicherte Mappen speichert Excel immer unter Eigene Dokumente ab. Sobald ich das Tabellenblatt kopiere (Sheets("ExportCSV").Copy) erstellt Excel eine neue Mappe, die ja dann aktiv ist...

AW: ThisWorkbook.Path
27.06.2015 10:28:32
RPP63
Hallo!
Probiere mal:
ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & Range("A2").Value,
FileFormat:=xlCSV, CreateBackup:=False
Gruß Ralf

Anzeige
AW: ThisWorkbook.Path
27.06.2015 10:49:02
Paul
Das funktioniert tatsächlich. Vielen Dank. Auch wenn ich nicht verstehe warum, schließlich ist
ChDir ThisWorkbook.Path
ActiveWorkbook.SaveAs Filename:=Range("A2").Value,

nichts anderes als
ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & Range("A2").Value,
...
Aber vielleicht muss man nicht alles verstehen. Solange es funktioniert!

Nicht nicht anders (manche sagen : doch anders)
27.06.2015 10:54:32
RPP63
Hi!
Bemerkst Du den Backslash in meiner Lösung? ;)
Gruß Ralf

AW: Nicht nicht anders (manche sagen : doch anders)
27.06.2015 11:07:47
Paul
Offenbar blicke ich nicht durch die Excel Logik. Active ist das was gerade geöffnet, angeklickt, im Vordergrund ist. Bezieht sich This dann nicht auch darauf? Naja klar, offenbar nicht. Ich hatte halt mit einer hoch komplizierten Lösung gerechnet, erst einen Pfad zu erkennen, ihn zu hinterlegen um ihn dann wieder nutzen zu können. Umso schöner wenn es einfach geht! :)

Anzeige
This
27.06.2015 11:19:48
RPP63
ThisWorkbook ist das WB, in dem der Code steht.
ActiveWorkbook das gerade aktive.
Gruß Ralf

AW: This
27.06.2015 11:24:26
Paul
Jetzt hab ichs. Mensch mit dem Wissen eröffnen sich ganz neue Möglichkeiten! Ich dachte Dir Ralf!

AW: This
27.06.2015 12:24:18
Ralf P.
Hallo Paul,
Da gibt es mehrere fallstricke.
Chdir schlägt fehl, wenn das aktive Drive ein anderes ist, bspw. D: statt c: oder gar ein netzlaufwerk.
Du musst chdrive und chdir genauso verwenden wie in der dos console. Also erst Laufwerk wechseln dann Verzeichnis.
Zudem ist activeworkbook.Path leer, solange die neue Datei ungespeichert ist.
Ergo: das sicherste ist, bei jeder Datei Operation den kompletten Pfad anzugeben.
Gruß
Ralf

Anzeige

14 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige