Hallo zusammen, Ich habe mich nur doch für eine Dummydatei entschieden und bastle schon eine weile daran rum, komme aber nicht weiter.
Code:
Sub Dummydatei() Pfadname = "D:\Berichte\" Pfadname = Pfadname & ActiveSheet.Range("F3") ChDrive Pfadname Set fs = CreateObject("Scripting.FileSystemObject") Ordnervorhanden = fs.FolderExists(Pfadname) If Ordnervorhanden Then ChDir Pfadname Else Set fs = fs.CreateFolder(Pfadname) End If
Dieser Codeteil erstellt einen Unterordner der in F3 steht ( F3= Bericht 16 ), funktioniert.
Code:
Dim loA As Long For loA = ActiveSheet.Range("C2") To Range("D2") ActiveWorkbook.SaveAs Filename:= _ "D:\Berichte\" & Format(Str(loA), "00") & ".xls", FileFormat:=xlNormal, _ Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _ CreateBackup:=False Next End Sub
Dieser Codeteil erstellt die einzelnen Dateien ( C2 = 20160101 bis D2 = 20160131 ), das funktioniert auch. Ich möchte aber, das diese Dateien in den neu erstellten Unterordner ( F3= Bericht 16 ) abgespeichert werden. Wie muss der Code geändert werden ??? Habe nur sehr sehr bescheidene VBA Kenntnisse, die Code sind alle nur "geklaut".
08.12.2015, 11:44 (Dieser Beitrag wurde zuletzt bearbeitet: 11.12.2015, 11:16 von Rabe.)
Hi Willy,
(08.12.2015, 10:51)WiK schrieb: PS: Nur so interesse halber.
Code:
Option Explicit
Sub Dummydatei() Pfadname = "D:\Berichte\"
Wenn man "Option Explicit" einfügt, meckert er gleich beim ersten Pfadname ?
er meckert nicht beim Namen des Pfades, sondern bei der Variablen "Pfadname", weil die nicht dimensioniert ist. Schreibe in die Zeile nach dem SUB: DIM Pfadname as STRING
und so weiter für alle Variablen (natürlich die richtigen Begriffe). DIM loA as LONG ...
Danke für deine Antwort, Sorry meine Antwort hat ein bisschen länger gedauert. Variablen "Pfadname" ist jetzt i.O., aber bei Set ist "fs =" blau hinterlegt. Ist aber egal habe "Option Explicit" wieder raus genommen, es war ja nur interesse halber. Der Code macht das was er sollt und es funktioniert.
10.12.2015, 19:39 (Dieser Beitrag wurde zuletzt bearbeitet: 10.12.2015, 19:39 von Käpt'n Blaubär.)
Hi,
Zitat:Ist aber egal habe "Option Explicit" wieder raus genommen, es war ja nur interesse halber.
Der Code macht das was er sollt und es funktioniert. [img] Dateiupload bitte im Forum! So geht es: Klick mich! ]
was Option Explicit macht und wozu es gut ist, ist Dir ja schon geschrieben worden. Auch die Lösung, wie man vernünftig programmiert, ist Dir dort gezeigt worden.
Es stand aber nicht dort, jedenfalls kann ich mich nicht dran erinnern, gelesen zu haben, daß es eine hervorragende Idee ist, Option Explicit wieder zu entfernen, um eigene Programmierschlampigkeiten zu vertuschen.
10.12.2015, 20:14 (Dieser Beitrag wurde zuletzt bearbeitet: 10.12.2015, 20:14 von RPP63.
Bearbeitungsgrund: Ergänzung
)
Hallo Peter!
Ist nur meine Meinung … Ich sehe das mit Option Explicit ähnlich wie mit Early Binding. Beide helfen mir, Intellisense zu nutzen.
Wenn aber aufgrund der Kompatibilität (fehlende Verweise) Late Binding genutzt wird, macht die Variablendeklaration in meinen Augen keinen Sinn:
Zitat:Dim fs As Object Set fs = CreateObject("Scripting.FileSystemObject")
ist redundant und hat keinerlei Vorteile. Ich habe Beispiele in Foren gesehen, wo 20 Variablen deklariert wurden, wo eine gereicht hätte. In diesem Fall führt sich dann auch der geringfügige Speicherplatzvorteil korrekt deklarierter Variablen selbst ad absurdum.
Ich schließe, wie ich begann: Ist nur meine Meinung …
Ergänzung: Wie Du bemerkt hast, verwende ich (in Foren) auch grundsätzlich Option Explicit, notwendig ist es nicht.
Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Folgende(r) 1 Nutzer sagt Danke an RPP63 für diesen Beitrag:1 Nutzer sagt Danke an RPP63 für diesen Beitrag 28 • WiK
Danke für deine hilfreiche Antwort, habe den Code geändert und er läuft jetzt mit Option Explicit ohne zu meckern. :28:
Code:
Option Explicit Sub Dummydatei() Dim Pfadname As String Pfadname = "D:\Berichte\" Pfadname = Pfadname & ActiveSheet.Range("F3") ChDrive Pfadname Dim fs As Object Set fs = CreateObject("Scripting.FileSystemObject") Dim Ordnervorhanden As String Ordnervorhanden = fs.FolderExists(Pfadname) If Ordnervorhanden Then ChDir Pfadname Else Set fs = fs.CreateFolder(Pfadname) End If
Dim loA As Long For loA = ActiveSheet.Range("C2") To Range("D2") Pfadname = "D:\Berichte\" Pfadname = Pfadname & ActiveSheet.Range("F3") ActiveWorkbook.SaveAs Filename:= _ Pfadname & Format(Str(loA), "00") & ".xls", FileFormat:=xlNormal, _ Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _ CreateBackup:=False Next For loA = ActiveSheet.Range("C3") To Range("D3") Pfadname = "D:\Berichte\" Pfadname = Pfadname & ActiveSheet.Range("F3") ActiveWorkbook.SaveAs Filename:= _ Pfadname & Format(Str(loA), "00") & ".xls", FileFormat:=xlNormal, _ Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _ CreateBackup:=False Next Application.Quit