Verwenden des richtigen Datums- und Zeitstempels im Skript

441
Michael Charry

In dem Skript, das ich verwende, habe ich

Sub Saveaspdfandsend() Dim xSht As Worksheet Dim xFileDlg As FileDialog Dim xFolder As String Dim xYesorNo As Integer Dim xOutlookObj As Object Dim xEmailObj As Object Dim xUsedRng As Range  Set xSht = ActiveSheet Set xFileDlg = Application.FileDialog(msoFileDialogFolderPicker)  If xFileDlg.Show = True Then xFolder = xFileDlg.SelectedItems(1) Else MsgBox "You must specify a folder to save the PDF into." & vbCrLf & vbCrLf & "Press OK to exit this macro.", vbCritical, "Must Specify Destination Folder" Exit Sub End If xFolder = xFolder + "\" + xSht.Name + Format(Now, " yyyy-mm-dd hmmAM/PM") + ".pdf"  'Check if file already exist If Len(Dir(xFolder)) > 0 Then xYesorNo = MsgBox(xFolder & " already exists." & vbCrLf & vbCrLf & "Do you want to overwrite it?", _ vbYesNo + vbQuestion, "File Exists") On Error Resume Next If xYesorNo = vbYes Then Kill xFolder Else MsgBox "if you don't overwrite the existing PDF, I can't continue." _ & vbCrLf & vbCrLf & "Press OK to exit this macro.", vbCritical, "Exiting Macro" Exit Sub End If If Err.Number <> 0 Then MsgBox "Unable to delete existing file. Please make sure the file is not open or write protected." _ & vbCrLf & vbCrLf & "Press OK to exit this macro.", vbCritical, "Unable to Delete File" Exit Sub End If End If  Set xUsedRng = xSht.UsedRange If Application.WorksheetFunction.CountA(xUsedRng.Cells) <> 0 Then 'Save as PDF file xSht.ExportAsFixedFormat Type:=xlTypePDF, Filename:=xFolder, Quality:=xlQualityStandard  'Create Outlook email Set xOutlookObj = CreateObject("Outlook.Application") Set xEmailObj = xOutlookObj.CreateItem(0) With xEmailObj .Display .To = "" .CC = "csc.canada@philips.com" .Subject = xSht.Name + ".pdf" .Attachments.Add xFolder If DisplayEmail = False Then '.Send End If End With Else MsgBox "The active worksheet cannot be blank" Exit Sub End If End Sub 

die 2018 04 06 245 PM zeigen wird. Ich habe versucht, ein: zwischen h und mm zu setzen, aber es gibt einen Fehler beim Ausführen des Skripts. Ich kann ein Leerzeichen oder ein. aber nicht a: Ist das nicht möglich?

0
Wo läuft dein Skript? Excel? Unix-Shell? (unwahrscheinlich), aber fügen Sie Ihrer Frage ein Tag hinzu, um anzugeben, welches Programm / welche Umgebung Sie verwenden. Mark Stewart vor 6 Jahren 0
Es tut uns leid. Es ist in Excel. Michael Charry vor 6 Jahren 1
Dies ist ein VBA-Skriptmakro. Ich verwende ein Angebot, das das Angebot als PDF speichert und in einer E-Mail anfügt Michael Charry vor 6 Jahren 0
Mein früherer Kommentar wurde gelöscht, aber ich denke, ein Abstand zwischen mm und AM wird immer noch den Trick erfüllen. h: mm AM / PM. Ich glaube auch nicht, dass Sie diesen Platz zwischen der Eröffnung "und yyyy brauchen. jrichall vor 6 Jahren 0
das Leerzeichen zwischen "und yyyy" ist so, dass zwischen dem gespeicherten Dateinamen und dem Datum in diesem Namen ein Leerzeichen ist. Ich habe versucht, h: mm AM / PM zu verwenden, und ich bekomme Laufzeitfehler '52 ": Ungültiger Dateiname oder -nummer Michael Charry vor 6 Jahren 0

2 Antworten auf die Frage

3
piko

In Windows dürfen Dateinamen das Zeichen nicht enthalten :. Daher tritt beim Versuch, die Datei zu speichern, ein Laufzeitfehler auf.

Sie sollten auch ein 24h-Format anstelle von AM / PM verwenden: hhmmNähte sicherer für mich.

Weitere Informationen finden Sie unter Formatfunktion (Visual Basic für Applikationen) .

-1
Rajesh S

Für den richtigen Datums- und Zeitstempel sollte Ihre VB-Befehlszeile lauten:

Format(now(), "yyyy-MM-dd hh:mm:ss") 

oder

Format(DateTime.Now, "yyyy-MM-dd hh:mm:ss") 

Anmerkung: DateTime.NowGibt einen Wert vom Datentyp Date zurück. Datumsvariablen zeigen Datumsangaben entsprechend dem in Ihrem System festgelegten kurzen Datums- und Zeitformat an.

Um AM / PM anzuzeigen, ändern Sie Ihre Formatzeichenfolge wie folgt:

Format(TimeValue(Now), 'hh:mm AM/PM')