Clever-Excel-Forum

Normale Version: Formel mit Jahr und Datum automatisch ersetzen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3 4 5 6 7
Hi zusammen,
ich habe nochmal eine Frage, die auch Willi schon gestellt hat, aber ich glaube, ich habe die Antwort nicht verstanden:

Code:
=WENN($A3<HEUTE();'D:\Berichte\Berichte 15\[20151201.xls]Sheet1'!$B$136;"")

kann nicht in der Formel der Dateiname durch einen Zellbezug (zwei Zellen) ersetzt werden, in denen dann das Jahr und der Monat steht?

Dann muß nie wieder was in den Formeln ersetzt werden.
Hallo Ralf,

das würde nur mit INDIREKT gehen und das wiederum geht nicht auf geschlossene Dateien.
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 ???  Huh  Huh  Huh
Habe nur sehr sehr bescheidene VBA Kenntnisse, die Code sind alle nur "geklaut".

Gruß Willy
Hallo Willy,

Du kanst im zweiten Code nach dem selben Strickmuster wie i ersten vorgehen:

Code:
...
Pfadname = "D:\Berichte\"
    Pfadname = Pfadname & ActiveSheet.Range("F3")
...
ActiveWorkbook.SaveAs Filename:= _
Pfadname & Format(Str(loA), "00") & ".xls", ...

Wenn in F3 kein "\" am Ende des Pfades ist, musst Du den noch in der Zelle oder im Code dazutun.
Hallo Andre,

Habe den Code geändert und in F3 ein "\" eingefügt, funktioniert super.

Danke  :23:

Gruß Willy

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 ?
Hi Willy,

(08.12.2015, 09: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
...
Hi Ralf,

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.  Thumbsupsmileyanim

Gruß Willy
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.
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
Halllo Ralf @RPP63,

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

End Sub

Gruß Willy
Seiten: 1 2 3 4 5 6 7