2016-06-23 2 views
-1

У меня есть шаблон файла Excel и в 11:50 вечера по восточному времени. Я хочу, чтобы он сохранил копию всего дневного файла в качестве даты его использования. Только проблема заключается в том, что она не экономит. Нет сообщений об ошибках и ничего в папках. Кроме того, файл необходимо сохранить в другом месте. Кто-нибудь должен помочь?Использовать .SaveCopyAs

Вот копия коды:

sub end_of_day() 
Dim path As String 
Dim filename As String 

path = "\\myfile\project\" 
filename = "Log as of " & Sheet2.Range("N1").Value & " ET" 


If Sheet2.Range("O1").Value = Sheet2.Range("T1") Then 

ThisWorkbook.SaveCopyAs Filename:=path & filename 
End If 
End Sub 

Примечание: Я живу в другом часовом поясе, поэтому в моем первенствовать лист, у меня есть две ячейки, которые содержат текущее время ET и время ET он сравнивает чтобы он начал сохранять копию.

N1 имеет формат даты ET ММДДГГГГ (06232016) О1 является текущим восточным чч времени: мм AM/PM (11:50 PM) и T1 имеет постоянное время 11:50 вечера.

Я пропустил что-нибудь для этого, чтобы работать? Оцените свой ответ.

EDIT:

Я извиняюсь всем, что я не был ясен. Эта рабочая книга открывается каждые 10 минут, используя планировщик задач, а затем запускает все модули, которые у нее внутри. Он соберет извлеченные данные за это время до 11:50 вечера (извините, что я набрал AM), где он спасет себя как ценность данных дня, которую он собрал, а затем начнет новый день в 12 часов. По этой причине я хочу сохранить копию файла и не трогать книгу, поскольку она будет действовать как шаблон.

+0

Было бы полезно точно знать, как вы запускаете подпрограмму для запуска в указанное вами время? – Carrosive

+0

Как этот Sub запускается? Вам понадобится, чтобы он работал постоянно, чтобы это произошло в 11:50. –

ответ

0

Если я читаю это право, вы ожидаете, что это приведет к событию в 11.50. Если утверждения не работают, процесс должен постоянно отслеживать время. Почему вы не можете использовать запланированную задачу для этого?

+0

Да, извините, я не добавил эту часть, но этот файл запускается с помощью планировщика задач каждые 10 минут. –

0

Проблема, с которой вы сталкиваетесь, заключается в том, что ваш юзер не работает, как вы ожидаете, субтитры будут работать только по мере их вызова. Поскольку вы использовали оператор If, чтобы проверить время и выполнить свое действие, единственный способ заставить это работать - разместить его в бесконечном цикле. Это было бы очень неэффективным способом достижения того, что вы пытаетесь сделать.

Вместо того чтобы проверять время снова и снова и делать сэкономленное время, когда время 11:50, вы могли бы вместо этого планировать свою субстанцию ​​в это время. Идеальный способ сделать это было бы поместить следующий подпункт в ThisWorkbook

Private Sub Workbook_Open() 
    Application.OnTime TimeValue("11:50:00"), "end_of_day" 
End Sub 

Это будет планировать макрос для запуска в 11:50, как только вы открываете книгу, без того, чтобы сделать что-нибудь ваш суб будет работать на 11 : 50. Это время будет местным временем на машине, на которой вы используете книгу, поэтому при необходимости ее нужно будет скорректировать.

Вы должны также удалить свой оператор If из своего end_of_day, так как он больше не требуется.

Что-то стоит отметить, что время 11:50 утра 10 минут до полудня, однако кажется, что вы хотите, чтобы это было запущено в конце дня, то есть в полночь? В этом случае ваше время должно быть «23:50:00»

+0

Прошу прощения, я не был ясен. Этот файл excel открывается каждые 10 минут с помощью планировщика задач. Поэтому я называю этот модуль вместе с другими, которые у меня есть внутри книги, с помощью подкаталога workbook_open. В это время он сохранит все собранные данные в тот конкретный день и в 12mn нового дня, он снова запустится как новый файл. поэтому я не хотел, чтобы шаблон делал .saveas. –

0

Благодарим вас за предоставленную информацию. Файл теперь работает нормально. Я только что изменил заявление If. Я просто добавил знак «больше, чем» в коде, тогда он работал нормально. Это экономит время, когда оно продолжается, и продолжается, если это еще не так.

sub end_of_day() 
Dim path As String 
Dim filename As String 

path = "\\myfile\project\" 
filename = "Log as of " & Sheet2.Range("N1").Value & " ET" 


If Sheet2.Range("O1").Value >= Sheet2.Range("T1") Then 

ThisWorkbook.SaveCopyAs Filename:=path & filename 
End If 
End Sub 
Смежные вопросы