2016-05-04 4 views
0

У меня есть скрипт vb, который выполняет макрос excel и сохраняет файл, добавляя имя с определенным значением ячейки и временной меткой. Но это не работает, и я полностью потерял причину.VBS для сохранения с помощью ссылки на ячейки и временной метки

Если я вынимаю ссылки на ячейки и метки времени, они выполняются и сохраняются правильно. Любая помощь или материал, которые я могу рассмотреть, будут очень признательны. Заранее спасибо.

Option Explicit 

On Error Resume Next 

ExcelMacroExample 

Sub ExcelMacroExample() 

Dim objApp 
Dim objExcel 
Dim objWorkbook 
Dim objSheet 

Set objExcel = CreateObject("Excel.Application") 
Set objWorkbook = objExcel.Workbooks.Open("C:\Users\midi\Desktop\EN\SCORES.xlsm") 
Set objSheet = objWorkbook.Worksheets("Cover Tab") 
Set SiteIdentifier = objSheet.Cells("B4").Value 

objExcel.Run "RefreshConns" 
WScript.Sleep 30000 

objExcel.ActiveWorkbook.SaveAs "C:\Users\midi\Desktop\EN\SCORES_" & SiteIdentifier & "_"& Format(Now(), "yyyymmdd_hhnnss") & ".xlsm", 52 

objExcel.ActiveWorkbook.Close 

objExcel.Quit 


End Sub 
+0

Должно ли это 'yyyymmdd_hhnnss' быть этим' yyyymmdd_hhmmss'? Попробуйте определить строку, которая будет содержать полное имя файла и отлаживать печать имени файла. – OldUgly

+0

Я переключил его, но все равно не повезло .. это самое странное, сценарий работает, и excel делает то, что ему нужно (я отслеживаю в диспетчере задач), но он, похоже, не завершает сохранение и закрытие приложения. Я сделаю это сейчас, спасибо @OldUgly – midiman

+0

Что оценивает SiteIdentifier? Будет ли это способствовать недопустимому имени файла? – OldUgly

ответ

0

Спасибо всем за советы, помогли мне разобраться в моих ошибках. Проводка ответа для закрытия.

Option Explicit 

ExcelMacroExample 

Sub ExcelMacroExample() 

    Dim objApp 
    Dim objExcel 
    Dim objWorkbook 
    Dim objSheet 
    Dim SiteIdentifier 

Set objExcel = CreateObject("Excel.Application") 
Set objWorkbook = objExcel.Workbooks.Open("C:\Users\midi\Desktop\EN\SCORES.xlsm") 
Set objSheet = objWorkbook.Worksheets("Cover Tab") 

SiteIdentifier = objSheet.Cells(4, 2).Value 

objExcel.Run "RefreshConns" 
    WScript.Sleep 60000 

objExcel.ActiveWorkbook.SaveAs "C:\Users\midi\Desktop\EN\SCORES_" & SiteIdentifier & "_" & Year(Now()) & Month(Now()) & Day(Now()) & "_" & Hour(Now()) & Minute(Now()) & Second(Now())&".xlsm", 52 

objExcel.ActiveWorkbook.Close 

objExcel.Quit 


End Sub 
+3

Если вы ищете причину, то ее функция 'Set' используется для объектов/диапазоны, а не строки. При установке строковых значений вы просто используете '='; в качестве альтернативы вы могли бы сделать «Set SiteIdentifier = objSheet.Cells (4, 2)», а затем использовать 'SiteIdentifier.Value' в вашем' SaveAs'. – Jordan

+0

@ JordanBiddlecombe ahhh, спасибо! – midiman

Смежные вопросы