VB.Net保存Word文档没有提示

标签 vb.net ms-word savefiledialog

预先感谢您能给我的任何帮助。

我正在尝试创建一个 VB 应用程序,该应用程序将打开现有的 Word 文档,进行一些更改并使用新文件名保存它。对文档进行更改很容易。保存文档似乎应该很容易,但有一个严重的问题。当我尝试保存文档时,“另存为”对话框打开。这应该是自动化的,所以不起作用。我尝试了很多变体:

Sub Main()
    Dim oWord As Word.Application
    Dim oDoc As Word.Document
    Dim fileName As String
    Dim templateName As String
    Dim newFileName As String

    'Start Word and open the document template.
    oWord = CreateObject("Word.Application")
    oWord.Visible = False
    oWord.DisplayAlerts = Word.WdAlertLevel.wdAlertsNone

    templateName = "C:\tmp\template.dotx"
    fileName = "C:\tmp\document.docx"
    newFileName = "C:\tmp\new document.docx"

    oDoc = oWord.Documents.Add(templateName)
    'oDoc = oWord.Documents.Open(fileName)  I have tried both using a template and opening a docx file.

    <make changes>

    oDoc.SaveAs2(newFileName)

    oWord.Documents.Close(Word.WdSaveOptions.wdDoNotSaveChanges)
    oWord.Application.Quit()
    oWord = Nothing
End Sub

它总是停在这里:

oDoc.SaveAs2

并打开另存为对话框。我需要找到一种方法来抑制“另存为”对话框或一种编辑Word文件的新方法。到目前为止,我发现的有关该问题的所有内容要么尚未解决/更新,要么与 Word 插件有关。我没有任何人们所说的导致问题的插件。为了安全起见,我禁用了所有单词插件。

如果有人解决了这个问题或者有不同的方法,我将不胜感激。我并没有坚持使用 VB 的想法。我走这条路的唯一原因是因为我认为它为我提供了编辑图表和格式化文档的最佳库。

谢谢,史蒂夫

最佳答案

我发现了问题。答案在于我在对文档进行更改时省略的部分中所做的事情。这些更改的一部分是更新文档中图表中的数据。我有类似的东西:

For Each oShape As Word.InlineShape In oDoc.InlineShapes
    If oShape.HasChart And oShape.Range.Bookmarks.Item(1).Name = "ChartName" Then
        Console.WriteLine("Updating ChartName")
        Dim oWorkbook As Excel.Workbook
        oWorkbook = oShape.Chart.ChartData.Workbook

        oWorkbook.Worksheets(1).Range("B2").FormulaR1C1 = "9"
        oWorkbook.Worksheets(1).Range("B3").FormulaR1C1 = "5"
        oWorkbook.Worksheets(1).Range("B4").FormulaR1C1 = "1"

        oWorkbook.Application.Quit()

    End If
Next

我把它改为:

For Each oShape As Word.InlineShape In oDoc.InlineShapes
    If oShape.HasChart And oShape.Range.Bookmarks.Item(1).Name = "ChartName" Then
        Console.WriteLine("Updating ChartName")
        Dim oWorkbook As Excel.Workbook
        oWorkbook = oShape.Chart.ChartData.Workbook

        oWorkbook.Worksheets(1).Range("B2").FormulaR1C1 = "9"
        oWorkbook.Worksheets(1).Range("B3").FormulaR1C1 = "5"
        oWorkbook.Worksheets(1).Range("B4").FormulaR1C1 = "1"

        oShape.Chart.Refresh()
        oWorkbook.Close(True)

    End If
Next

现在可以了

关于VB.Net保存Word文档没有提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31527248/

相关文章:

ASP.NET/VB.NET : Iterate through multiline textbox

vb.net - 如何以长整数形式存储二进制补码

excel - 如何从Word文件中提取标题到Excel?

c# - 使用两个扩展名保存文件

c# - 无法访问文件,因为它正被另一个进程使用

c# - 如何从代码隐藏访问用于填充 XAML 类的 DataContext 的属性/方法?

vb.net - 如何获得偶数或奇数

c# - 如何访问与类实例同名的命名空间?

PHP 清理粘贴的 Microsoft 输入

java - 使用 Apache POI 在 Word 文档中添加水印