используя правильную дату и время в скрипте

370
Michael Charry

В сценарии, который я использую, у меня есть

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 

который покажет 2018 04 06 245 вечера. Я попытался поставить: между h и mm, но это выдает ошибку при запуске скрипта. Я могу использовать пробел или. но не: это не возможно?

0
Где работает ваш скрипт? Excel? Оболочка Unix? (маловероятно), но, пожалуйста, добавьте тег к своему вопросу, чтобы указать, какую программу / среду вы используете. Mark Stewart 6 лет назад 0
Сожалею. Это в Excel. Michael Charry 6 лет назад 1
это макрос скрипта VBA, который я запускаю в коммерческом предложении, который сохраняет предложение в формате PDF, а затем прикрепляет его в электронном письме Michael Charry 6 лет назад 0
Удален мой предыдущий комментарий, но я думаю, что промежуток между мм и АМ все равно поможет. ч: мм AM / PM. Кроме того, я не думаю, что вам нужно это пространство между открытием "и гггг. jrichall 6 лет назад 0
пробел между "и yyyy таков, что между именем сохраненного файла и датой в этом имени есть пробел. Я пробовал h: mm AM / PM и получаю ошибку во время выполнения '52": неверное имя или номер файла Michael Charry 6 лет назад 0

2 ответа на вопрос

3
piko

В Windows имена файлов не могут содержать символ :. Вот почему при попытке сохранить файл возникает ошибка во время выполнения.

Вы должны также использовать 24-часовой формат вместо AM / PM: hhmmшвы безопаснее для меня.

Проверьте функцию форматирования (Visual Basic для приложений) для получения дополнительной информации.

-1
Rajesh S

Для правильной отметки даты и времени ваша командная строка VB должна быть,

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

или же

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

Примечание: DateTime.Nowвозвращает значение типа данных Date. Переменные даты отображают даты в соответствии с кратким форматом даты и времени, установленным в вашей системе.

Чтобы отобразить AM / PM, измените строку формата на следующую:

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