2013-02-10 43 views
5

tôi đang làm việc trên một dự án mà chủ yếu trông như thế này:Excel Crashing khi kiểm tra Trong Excel Workbook chưa sửa đổi để SharePoint với 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: Tôi đã "Nếu workbookVariable.Saved = True"; không có điểm nào trong việc lưu một tệp nếu nó đã được lưu ... Vì vậy, điều này được cập nhật để phản ánh những gì tôi thực sự có.)

Nếu sổ làm việc được sửa đổi và được lưu, mọi thứ đều chạy tốt. Nó lưu, được kiểm tra trở lại vào SharePoint, và chương trình kết thúc bình thường.

Tuy nhiên, nếu sổ làm việc không bị sửa đổi, khi nó đi đến phần kiểm tra lại trong phần của chương trình, lỗi excel và tôi nhận được thông báo lỗi: "Lỗi tự động".

Tôi thậm chí đã cố gắng đưa vào một lệnh chờ đợi sau khi lệnh checkIn, không may mắn ...

gì đang xảy ra ở đây? Ai đó có thể chỉ cho tôi đi đúng hướng?

+1

Có thể mỗi khi bạn có thể cố gắng lưu để xem sự cố vẫn tiếp diễn hay không. Mặc dù bạn có thể không thực hiện bất kỳ sửa đổi nào đối với tệp. – bonCodigo

+1

Tôi đã làm, trên thực tế, kiểm tra điều đó, và nó giải quyết được vấn đề; mặc dù nó không phải là cách tôi thực sự có ý định đi. –

+0

True, nó chỉ là một * cover-up *, không giải quyết vấn đề thực sự;) – bonCodigo

Trả lời

0

Khi không có thay đổi nào được thực hiện (workbookVariable.saved = true), hãy sử dụng workbookVariable.CheckIn(False). Bạn không muốn CheckIn bản sửa đổi chính xác giống như bản gốc. Lãng phí không gian ở mức tối thiểu. Điều này sẽ loại bỏ "CheckOut" của bạn. Xem MSDN.

Nhờ có this page để chỉ ra điều cần phải rõ ràng.

Điểm cuối cùng của sự tò mò: Tại sao lại kiểm tra sổ làm việc khi bạn có thể không thực hiện thay đổi?

+0

Khi nó bật ra, tôi đã kết thúc không kiểm tra nó ra, thay vào đó, tôi đã kiểm tra một khóa trên tập tin. Lý do chính của tôi để kiểm tra nó là macro _might_ đã thực hiện thay đổi, nhưng cho đến khi nó chạy, chúng tôi không biết nếu nó sẽ xảy ra. –

+0

Ngẫu nhiên, tôi đã thử workbookVariable.checkIn False (không có dấu ngoặc đơn) tuy nhiên cũng bị lỗi. –