Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Formel mit Jahr und Datum automatisch ersetzen
#21
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.
Antworten Top
#22
Hallo Ralf,

das würde nur mit INDIREKT gehen und das wiederum geht nicht auf geschlossene Dateien.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#23
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


Angehängte Dateien
.xls   Dummydatei Forum.xls (Größe: 37,5 KB / Downloads: 0)
Antworten Top
#24
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.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • WiK
Antworten Top
#25
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 ?
Antworten Top
#26
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
...
Antworten Top
#27
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
Antworten Top
#28
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.
________________________________________________________________________
wer aufgibt, ohne es versucht zu haben, gibt einfach nur auf!

Grüße aus Norderstedt, Peter
Antworten Top
#29
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:
  • WiK
Antworten Top
#30
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
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste