0

環境:

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がポップアップします。私は困惑している...

4

2 に答える 2

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 はこのファイルを保存または作成できません。保存するディスクがのファイルがいっぱいではないか、書き込み保護されていないか、破損しています。」

代わりに、アプリケーションに必要な書き込み権限がある場所 (たとえば、独自のユーザー ディレクトリ) に保存する必要があります。そうすれば、期待どおりに動作するはずです。

于 2013-02-26T21:18:07.227 に答える