SaveAs2方法仍然提示!为什么?

时间:2013-02-25 22:50:52

标签: vb.net ms-word office-interop

上下文:

  

Vb.net计划
  Visual Studio 2010终极版   MS Word 2010自动化
  Microsoft.Office.Interop.Word库

我正在使用saveAs2方法来保存我正在创建的新文档,但是当我调用该方法时,应用程序仍在提示我。为什么呢?

该应用程序不可见。 application.displayAlerts为false

任何想法的人?

另外,当我手动完成SaveUI提示时,saveAs2方法会抛出异常。

以下是我要求的人的代码:

    Public Sub generateModel() Implements ModelGenerator.generateModel

    wordApp.Visible = True
    wordApp.DisplayAlerts = Word.WdAlertLevel.wdAlertsNone

    wordDoc = wordApp.Documents.Add

    wordDoc.PageSetup.TopMargin = wordApp.InchesToPoints(0.25)
    wordDoc.PageSetup.BottomMargin = wordApp.InchesToPoints(0.25)
    wordDoc.PageSetup.LeftMargin = wordApp.InchesToPoints(0.25)
    wordDoc.PageSetup.RightMargin = wordApp.InchesToPoints(0.25)

    With wordDoc.Content.Paragraphs.Add(wordDoc.Bookmarks.Item("\endofdoc").Range)

        .Range.Text = _text 
        .Format.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter
        .Format.LineUnitBefore = 1
        .Range.Font.SmallCaps = True
        .Range.Font.Size = 12

    End With

    Dim logo = wordDoc.Shapes.AddPicture(logoLoc)
    logo.Height = wordApp.InchesToPoints(0.5)
    logo.Width = wordApp.InchesToPoints(1.18)

    Me.mainTable = wordDoc.Tables.Add(wordDoc.Bookmarks.Item("\endofdoc").Range, 3, 2)
    mainTable.Rows.HeightRule = Word.WdRowHeightRule.wdRowHeightExactly
    mainTable.Columns.Width = wordApp.InchesToPoints(4)
    mainTable.Rows.Height = wordApp.InchesToPoints(3.25)
    mainTable.Select()
    wordApp.Selection.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphLeft

    With wordDoc.Content.Paragraphs.Add(wordDoc.Bookmarks.Item("\endofdoc").Range)

        .Range.Text = "Rapport journalier de production - page 2"
        .Range.Font.Size = 10
        .Format.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter
        .Format.LineUnitBefore = 0
        .Format.SpaceBeforeAuto = False
        .Format.SpaceBefore = 0

    End With

    wordDoc.SaveAs2("C:\Doc1.docx")

    wordDoc.Close(False)
    wordApp.Application.Quit()

End Sub

**更新:

我在其他机器上测试了代码并且它可以工作。所以我在我的网上尝试了这个代码:

Dim app As New Microsoft.Office.Interop.Word.Application
Dim doc = app.Documents.Add
doc.SaveAs2("C:\Users\simon\Documents\Doc3.docx")

它仍然会使saveUI弹出。我很困惑......

2 个答案:

答案 0 :(得分:2)

终于找到了问题的来源。

每次安装Word时,我的Acer计算机都在安装插件。一旦我从Word中删除了加载项,一切都恢复正常。

加载项是AcerCloud加载项。

答案 1 :(得分:0)

我刚尝试在C#,Word Interop API v.15(Office 2013)中创建示例实现:

var wordApplication = new Application() { Visible = true };
var doc = wordApplication.Documents.Add();
doc.SaveAs2(@"C:\my.docx");

...当您保存到需要管理员权限的位置时(例如C:\驱动器的根目录),Word Interop会抛出System.Runtime.InteropServices.COMException说:“Word不能保存或创建此文件。确保要保存文件的磁盘未满,写保护或损坏。“

相反,您应该保存在您的应用程序具有必要写入权限的位置,例如,保存到您自己的用户目录 - 然后它应该按预期工作。