1

我已经编写了以下代码来编辑 Word 文档的书签。生成文档时,文档是可见的,但是如果我关闭相同的文档并尝试再次打开相同的文档,则 Word 文档会给出以下错误:

1.检查文件/驱动器的文件权限。2.确保有足够的内存和磁盘空间。

private void GenerateApplication()
{
object readOnly = true;
object repair = false;
object bookMarkName = "applicantName";
object bookMarkCompany = "firmName";
object bookMarkPost = "postName";

fielName = @"C:\Documents and Settings\AllUsers\Desktop\OperateWordFromC#.dotx";


objDoc = wordApp.Documents.Open(ref fielName, ref missingValuesValues, ref readOnly,       ref missingValuesValues, ref missingValuesValues, ref missingValuesValues, ref missingValuesValues, ref missingValuesValues, ref missingValuesValues, ref missingValuesValues, ref missingValuesValues, ref missingValuesValues, ref repair, ref missingValuesValues, ref missingValuesValues, ref missingValuesValues);

objDoc.Activate();

objDoc.Bookmarks.get_Item(ref bookMarkName).Range.Text = txtApplicantName.Text;       

objDoc.Bookmarks.get_Item(ref bookMarkCompany).Range.Text = txtAppliedCompany.Text;
objDoc.Bookmarks.get_Item(ref bookMarkPost).Range.Text = txtAppliedPost.Text;

string outputFile = @"C:\Documents and Settings\All Users\Desktop\ApplicationOf-" + txtApplicantName.Text + ".docx";

bookMarkName = null;
bookMarkCompany = null;
bookMarkPost = null;

Object objSaveAsFile = outputFile;
Object objFileFormat = Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatDocument;

wordApp.ActiveDocument.SaveAs(ref objSaveAsFile, ref repair, ref missingValuesValues, ref missingValuesValues, ref missingValuesValues,  ref missingValuesValues, ref  missingValuesValues, ref missingValuesValues, ref missingValuesValues, ref missingValuesValues, ref missingValuesValues, ref missingValuesValues, ref missingValuesValues, ref missingValuesValues, ref missingValuesValues, ref missingValuesValues); 
wordApp.Visible = true;
}
4

1 回答 1

1

您正在打开的文档(由 引用objDoc)有自己的.SaveAs方法,带有以下参数,详细信息在Microsoft 文档中:

objDoc.SaveAs(ref objSaveAsFile, ref objFileFormat, ref objLockComments, 
    ref objPassword, ref objAddToRecentFiles, ref objWritePassword, 
    ref objReadOnlyRecommended, ref objEmbedTrueTypeFonts, 
    ref objSaveNativePictureFormat, ref objSaveFormsData,
    ref objSaveAsAOCELetter, ref objEncoding, ref objInsertLineBreaks,
    ref objAllowSubstitutions, ref objLineEnding, ref objAddBiDiMarks);

因此,以这种方式保存文档(而不是参考wordApp.ActiveDocument)。您需要在调用之前适当地声明和初始化上面的变量SaveAs

如果您不再需要访问该文档(使用objDoc.Close()),也应该关闭该文档,但最迟在您的应用程序关闭之前。

当您稍后重新打开新保存的文档并对其进行更改时,您可以使用.Save()它来代替(它不需要任何参数)。

于 2013-09-30T11:05:46.963 回答