1

Microsoft.Office.Interop.Wordを使用してvb.netとMicrosoftWordを使用していますが、すべて問題ありません。私の唯一の問題は、デフォルトのページサイズの印刷設定を「レター」から「A4」に変更する方法が見つからないことです。このコードはCrystalレポートでは機能していましたが、Wordでは機能していません。

Dim pp As New System.Drawing.Printing.PrintDocument For i = 0 To pp.DefaultPageSettings.PrinterSettings.PaperSizes.Count - 1 If pp.DefaultPageSettings.PrinterSettings.PaperSizes.Item(i).Kind = System.Drawing.Printing.PaperKind.A4 Then pp.DefaultPageSettings.PaperSize = pp.DefaultPageSettings.PrinterSettings.PaperSizes.Item(i) Exit For End If Next

4

3 に答える 3

2

WordDocumentインスタンスのPageSetupインターフェイスのPaperSizeを変更する必要があります。

Imports Microsoft.Office.Interop.Word
....

Dim myWordApp as Application = New Application();  
Dim myWordDoc As Document = myWordApp.Documents.Open("your_file_name_here")
myWordDoc.PageSetup.PaperSize = WdPaperSize.wdPaperA4
于 2012-05-05T20:51:47.267 に答える
1

参照:http ://social.msdn.microsoft.com/forums/en-US/vsto/thread/45152591-1f3e-4d1e-b767-ef030be9d9f2

ページサイズはセクションごとに異なる可能性があるため、Document.SectionオブジェクトのPageSetupプロパティを設定するのが最善の方法です。たとえば、ドキュメントのすべてのセクションをループできます。

private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
    Application app = Globals.ThisAddIn.Application;
    Word.Document doc = app.ActiveDocument;
    foreach (Section section in doc.Sections)
    {
        section.PageSetup.PaperSize = WdPaperSize.wdPaperA4;
    }
}

ドキュメントを作成または開いたときに用紙サイズを設定するためにlocicを追加するのはあなた次第です。開いているドキュメントが、意図的にA4以外のサイズで保存されているかどうかを判断する必要があると思います。

編集:これは機能します、コメントで何を意味するのかわかりませんThisAddIn isnt a member or Globals and ActiveDocument isnt a member of Application in VB.NET-これらの上位2行をスキップすることはできません、ここにVB.Netバージョンがあります:

Private Sub ThisAddIn_Startup(sender As Object, e As System.EventArgs)
    Dim app As Application = Globals.ThisAddIn.Application
    Dim doc As Word.Document = app.ActiveDocument
    For Each section As Section In doc.Sections
        section.PageSetup.PaperSize = WdPaperSize.wdPaperA4
    Next
End Sub

> VisualStudio>新しいプロジェクトの作成>Office>Word 2010(または2007)アドインを作成し、上記のコードを貼り付けるだけです。これは、A4とLetterで動作することを示すスクリーンショットです。

ここに画像の説明を入力してください

直面する可能性のある唯一の問題は、プリンタにこのエラーが発生するサイズの用紙がない場合です。Requested PaperSize is not available on the currently selected printer.

于 2012-05-07T00:22:55.760 に答える
0

受け入れられた回答はドキュメントを更新したり、ページの向きを処理したりしないため、この質問に対する別の回答を投稿しています。だから誰かがこれを必要とする場合に備えて、私はこれがはるかに良い解決策であると思います...

            Microsoft.Office.Interop.Word.Application app = Globals.ThisAddIn.Application;
            Microsoft.Office.Interop.Word.Document doc = app.ActiveDocument;

            foreach (Section section in doc.Sections)
            {
                if(section.PageSetup.Orientation == WdOrientation.wdOrientLandscape)
                {
                    section.PageSetup.PageWidth = 841.88976378F;
                    section.PageSetup.PageHeight = 595.275590551F;

                }
                else
                {
                    section.PageSetup.PageWidth = 595.275590551F;
                    section.PageSetup.PageHeight = 841.88976378F;

                }

            }
于 2013-09-20T16:10:55.643 に答える