Document.Save показывает диалоговое окно «Сохранить как»

У меня есть проект приложения Windows Visual Studio 2010 VB.NET 4.0. Код заполняет документ Word 2010. Существует от 30 до 60 таблиц и от 30 до 50 встроенных диаграмм (все они определены как встроенные фигуры (InlineShape)).

Мне пришлось начать делать обычные вызовы Document.Save(), так как я получал следующую ошибку: There are too many edits in the document. This operation will be incomplete. Save your work.. Свободного места на диске предостаточно, памяти тоже.

В большинстве случаев .Save() работает, но случайным образом при вызове .Save() будет отображаться диалоговое окно «Сохранить как». В качестве примечания, если я нажму, чтобы отменить, возникает следующая ошибка: Command failed at Microsoft.Office.Interop.Word.DocumentClass.Save().

Вот фрагмент кода, чтобы дать вам представление о том, что происходит:

Imports _word = Microsoft.Office.Interop.Word
...
...
Dim wrd As _word.Application = CreateObject("Word.Application")
wrd.Visible = True
wrd.ScreenUpdating = True

Dim doc As _word.Document = wrd.Documents.Open("C:\my-file-template.docx")

doc.Application.DisplayAlerts = _word.WdAlertLevel.wdAlertsNone
doc.Range.NoProofing = True

Dim reportFilePathName As String = "C:\my-file.docx"
If File.Exists(reportFilePathName) Then
    File.Delete(Me.reportFilePathName)
End If
doc.SaveAs2(reportFilePathName)
...
'Numerous tasks carried out
...
doc.Save() 'This may or may not cause the save as dialog to show
...

Кто-нибудь знает, почему отображается диалоговое окно «Сохранить как»? Могу ли я остановить это?

Есть ли причина, по которой я получаю сообщение об ошибке «слишком много правок» и, следовательно, мне не нужно делать так много сохранений (что в любом случае замедляет процесс!)?


person TechyGypo    schedule 18.08.2014    source источник
comment
Это весь код/код из вашего проекта??? это работает на моем компьютере. нет сохранения как диалог / нет ошибки   -  person Creator    schedule 18.08.2014
comment
Нет. Это буквально крошечный отрывок. Это сотни строк кода, разбросанных по разным классам. Там, где я прокомментировал выполнение множества задач, может быть большое количество действий, включая добавление текста, форматирование, добавление диаграмм, добавление строк в таблицы и т. д. Я предполагаю, что реальная проблема заключается в следующем: ошибка слишком большого количества правок в документе, которая вынуждает меня сохранять - может быть, частота сохранения убивает Word ...   -  person TechyGypo    schedule 18.08.2014
comment
Я бы сказал, что проблема в многочисленных выполняемых задачах.   -  person Creator    schedule 18.08.2014
comment
Почему голосование против этого вопроса??? Я мог бы знать, почему, чтобы я мог улучшить свой вопрос, задаваясь в будущем...   -  person TechyGypo    schedule 20.08.2014


Ответы (1)


Я много возился и придумал обходной путь, а не настоящее исправление. Я подозревал, что настоящая проблема связана с ошибкой too many edits. Поэтому я еще немного поискал и нашел это сообщение на форуме, в частности 4-й пост Стива.

Это сработало, и я немного урезал его до этого:

Imports _word = Microsoft.Office.Interop.Word
...
Public Shared Sub GarbageCollect(ByRef doc As _word.Document)
    doc.Application.Options.Pagination = False
    doc.UndoClear()
    doc.Repaginate()
    doc.Application.ScreenUpdating = True
    doc.Application.ScreenRefresh()
End Sub

Стив предполагает, что свободное место в куче закончилось.

Это избавило меня от ошибки too many edits in document, и впоследствии я смог удалить все записи doc.Save() — диалоговое окно больше не сохранялось.

person TechyGypo    schedule 19.08.2014