2013-02-10 4 views
5

Я работаю над проектом, который по существу выглядит следующим образом:Excel сбои при проверке в неизмененной книге Excel в SharePoint с помощью VBA

if workbooks.canCheckOut(filename) = true then  
    workbooks.CheckOut(filename) 
    set workbookVariable = workboooks.Open(filename) 
else  
    ' Pesudocode: Display error message 
    '    Quit 
end if 

' Pseudocode: Do some stuff with workbookVariable.  
If workbookVariable.saved = false then  
    workbookVariable.save 
end if 

If workbookVariable.canCheckIn then  
    workbookVariable.checkIn 
    Set workbookVariable = Nothing 
else  
    msgbox "Error message goes here", vbCritical 
end if  
' Pseudocode: quit 

(Edit: я был «Если workbookVariable.Saved = True»; что было неправильно. Нет смысла сохранять файл, если он уже сохранен ... Итак, теперь это обновление, чтобы отразить то, что у меня действительно есть.)

Если книга изменена и сохраняется, все работает нормально. Он сохраняет, проверяется обратно в SharePoint, и программа заканчивается нормально.

Однако, если рабочая книга не изменяется, когда она идет на проверку в части программы, происходит сбой, и появляется сообщение об ошибке: «Ошибка автоматизации».

Я даже пытался ставить в команде ожидания после команды checkIn, не повезло ...

Что здесь происходит? Может ли кто-нибудь указать мне в правильном направлении?

+1

Возможно каждый раз, когда вы можете попытаться сохранить, чтобы устранить проблему. Хотя вы не можете вносить какие-либо изменения в файл. – bonCodigo

+1

Я действительно испытал это и решил проблему; хотя это не так, как я на самом деле намерен уйти. –

+0

Правда, это просто * прикрытие *, не разрешая реальной проблемы;) – bonCodigo

ответ

0

Если никаких изменений не было сделано (workbookVariable.saved = true), используйте workbookVariable.CheckIn(False). Вы не хотите, чтобы в CheckIn была такая же версия, как и у оригинала. Отходы пространства, по крайней мере. Это должно отменить вашу «CheckOut». См. MSDN.

Благодаря this page за то, что было очевидно.

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

+0

Как оказалось, я не проверял, вместо этого я проверил блокировку файла. Моя основная причина для проверки этого заключалась в том, что макрос _might_ внесли изменения, но пока он не запустился, мы не знали, будет ли это делать. –

+0

Кстати, я попробовал workbookVariable.checkIn False (без круглых скобок), однако, что тоже разбился. –