TIA Dateiname mit JJJJ-MM

Henri-1

Level-1
Beiträge
36
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,


ich muss unter TIA V15.1 RT eine Datei erzeugen: Dateinname_JJJJMM.csv.
Das Jahr habe ich 4-stellig, aber den Monat bekomme ich nicht zweistellig.
Da passt was mit meinem Syntax nicht.

Ich habs mit verschiedenen Möglichkeiten versucht aber irgendwo ist immer ein Fehler.
z.B.:
FName = "d:\Fuellstand_" & Year(aktuell) & Month(aktuell) & ".CSV"
FName = "d:\Fuellstand_" & Format$(Now, "YYYYMM") & ".CSV"

Kann mir da jemand weiterhelfen?


Danke und Gruß
 
Code:
' aus der Systemzeit einen String in der Form "31.12.2099 01:59:59" erzeugen
Dim t, s
t = Now ' Systemzeit
s = Right("0" & DatePart("d", t), 2) & "." & Right("0" & DatePart("m", t), 2) & "." & DatePart("yyyy", t) & " " _
  & Right("0" & DatePart("h", t), 2) & ":" & Right("0" & DatePart("n", t), 2) & ":" & Right("0" & DatePart("s", t), 2)

Datum_Uhrzeit-String für Dateinamen erzeugen:
Code:
' aus der Systemzeit einen String in der Form "20991231_015959" erzeugen
Dim t, s
t = Now ' Systemzeit
s = DatePart("yyyy", t) & Right("0" & DatePart("m", t), 2) & Right("0" & DatePart("d", t), 2) & "_" _
  & Right("0" & DatePart("h", t), 2) & Right("0" & DatePart("n", t), 2) & Right("0" & DatePart("s", t), 2)
....
Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Im Grunde sollte es mit der Format-Funktion auch funktioniert haben (kann ich aber leider gerade nicht testen).
Hier mal ein Link, der zeigt, wie sie richtig verwendet wird (Groß- und Kleinbuchstaben spielen da auch eine Rolle) :
https://docs.microsoft.com/de-de/of...format-function-visual-basic-for-applications


Das andere Beispiel sollte bei Berücksichtigung der Spielregeln auch funktionieren :
FName = "d:\Fuellstand_" & str(Year(aktuell)) & str(Month(aktuell)) & ".CSV"

Gruß
Larry
 
Zuletzt bearbeitet:
Im Grunde sollte es mit der Format-Funktion auch funktioniert haben (kann ich aber leider gerade nicht testen).
Hier mal ein Link, der zeigt, wie sie richtig verwendet wird (Groß- und Kleinbuchstaben spielen da auch eine Rolle) :
https://docs.microsoft.com/de-de/of...format-function-visual-basic-for-applications
Die Format-Funktion kann nicht funktionieren, weil die gibt es in VBS gar nicht (oder hat Siemens die selber in TIA implementiert?).
Die Format-Funktion gibt es nur in VB und VBA.

Das andere Beispiel sollte bei Berücksichtigung der Spielregeln auch funktionieren :
FName = "d:\Fuellstand_" & str(Year(aktuell)) & str(Month(aktuell)) & ".CSV"
Das Beispiel (egal ob mit oder ohne "str(..)" bzw. "CStr(..)") funktioniert tatsächlich irgendwie - aber nicht so wie der TE es will, weil es die Monatsangabe von Januar bis September nicht zweistellig liefert. Die führende "0" muß man selber dazubasteln:
Code:
'Variante 1
MM = Right("0" & Month(aktuell), 2)

'Variante 2
MM = Right(Month(aktuell) + 100, 2)

Harald
 
@Harald:
Wegen der Format-Funktion hatte ich ja geschrieben, dass ich das aktuell nicht testen kann ...
Bei der anderen Geschichte hat mich persönlich gestört, dass hier eine implizierte String-Konvertierung vorausgesetzt wird - ich weiß nicht ob das immer so funktioniert. Dessen ungeachtet sollte man, selbst wenn es funktioniert, das HEUTE nicht mehr machen.
Von deinen Vorschlägen des letzten Beitrags gefällt mir die 2. Variante am Besten - allerdings würde ich auch hier erst einmal einen String aus der Zahl machen und dann mit Right abschneiden ...

Gruß
Larry
 
Zuviel Werbung?
-> Hier kostenlos registrieren
(Groß- und Kleinbuchstaben spielen da auch eine Rolle)
So ist es mir auch geläufig, aber laut Deinem Link ist es nicht (mehr?) so!
Anscheinend ist m jetzt eindeutig zweideutig und wird gleichermassen für Monat und oder oder Minute gebraucht.
Wieder so eine Ecke, wo man ein Workaround basteln muss, damit VB/VBA einen Zusammenhang geliefert bekommt und sich dann entscheiden kann.
Kann man überhaupt NOW ohne Klammern verwenden? Hätte ich nicht erwartet.

Gruss, Heinileini
 
Zuletzt bearbeitet:
eigentlich ist es eindeutig "M" für Monat und "m" für Minute - so kenne ich es von Excel her (z.B.) oder auch von .Net ...

Gruß
Larry
 

Anhänge

  • Now.jpg
    Now.jpg
    158,3 KB · Aufrufe: 20
Danke für die Antworten,

hab mich für die 'Variante 2 entschieden.

MM = Right(Month(aktuell) + 100, 2)
[/CODE]



Gruß

Heiner
 
Zurück
Oben