6

VB.NETを使用してExcelスプレッドシートを印刷しようとしていますが、エラーが発生します

PageSetupクラスのPaperSizeプロパティを設定できません

これが私のコードです、

Dim oldCI As System.Globalization.CultureInfo = System.Threading.Thread.CurrentThread.CurrentCulture
    System.Threading.Thread.CurrentThread.CurrentCulture = New System.Globalization.CultureInfo("en-US")

    With application
        .AutomationSecurity = Microsoft.Office.Core.MsoAutomationSecurity.msoAutomationSecurityForceDisable
        .Visible = False
        .EnableEvents = False
        .DisplayAlerts = False
        .ScreenUpdating = False
    End With

    Dim workbook As Excel.Workbook
    Dim worksheet As Excel.Worksheet
    'Open as readonly and do not update links
    workbook = application.Workbooks.Open(_fileName, 2, True)

    For Each worksheet In workbook.Worksheets
        worksheet.PageSetup.PaperSize = _paperSize
    Next

    workbook.PrintOutEx()
    workbook.Close(False)
    application.Quit()

    System.Threading.Thread.CurrentThread.CurrentCulture = oldCI

    worksheet = Nothing
    application = Nothing

このコードは、テストサーバーにデプロイするとすぐに、開発マシンで機能します。コードは失敗します。サーバーには、デフォルトのプリンタードライバーが既にインストールされています。

4

4 に答える 4

7

プリンタードライバーをインストールする必要があります。Excel の PageSetup クラスは、プリンター ドライバーとやり取りする必要があります。

Mac Parallels (仮想マシン) で動作する Windows 8 で関連コードを実行すると、同様の問題が発生します。Mac Parallels で Visual Studio の展開を行っている人のために、私は次のことを行っています。

  1. Mac と Windows 間のプリンター共有を無効にします。[Parallels (VM)] > [構成] > [ハードウェア] に移動し、[印刷] をクリックします。「すべての Mac プリンターを追加する」と「デフォルト プリンターを同期する」のチェックを外します。
  2. Windows にプリンターのドライバーをインストールする
  3. 同じワイヤレス ルーターで割り当てられた IP アドレスを取得するには (プリンターにワイヤレスで接続する必要がある場合)、ネットワークをブリッジとして設定する必要があります。[Parallels (VM)] > [構成] > [ハードウェア] > [ネットワーク 1] に移動し、[ネットワーク タイプ] を [空港] に、DHCP サーバーを [自動] に選択します。
于 2014-01-02T15:52:51.647 に答える
1

核となる問題は、_paperSize定数にあります。私の場合、同じエラーが発生していました:(c#を許してください)

worksheet.PageSetup.PaperSize = Excel.XlPaperSize.xlPaperLedger; 

プリンターによっては、たとえば「元帳」サイズの用紙は 11x17 またはタブロイドとして定義される場合があります。プリンタードライバーがページサイズを参照するものを見つけてから、

動作しませんでした:

excel.ActiveSheet.PageSetup.PaperSize = Excel.XlPaperSize.xlPaperLedger 

excel.ActiveSheet.PageSetup.PaperSize = Excel.XlPaperSize.xlPaper11x17

働いた:

excel.ActiveSheet.PageSetup.PaperSize = Excel.XlPaperSize.xlPaperTabloid

これが、Microsoft Excel の列挙型の奇妙な不一致でイライラする問題を抱えている人の助けになることを願っています。

于 2016-08-23T23:01:44.187 に答える
1

Microsoft からの XSham の回答の確認:

https://support.microsoft.com/de-de/help/291298/you-cannot-use-page-setup-properties-in-excel-if-no-printers-were-inst

症状

Microsoft Excel でブックの任意のシートのページ設定プロパティを設定または取得しようとする Microsoft Visual Basic for Applications マクロを実行すると、次のいずれかのエラー メッセージが表示される場合があります。

実行時エラー '1004': PageSetup クラスの x プロパティを設定できません 実行時エラー '1004': PageSetup クラスの x プロパティを取得できません

原因

この問題は、コンピューターにプリンター ドライバーがインストールされていない場合に発生します。プリンター ドライバーがインストールされていない場合、Excel はページ設定プロパティを設定または取得できません。

解像度

この問題が発生しないようにするには、コンピューターにプリンター ドライバーをインストールします。コントロール パネルの [プリンタ] オプションを使用して、プリンタ ドライバを追加および削除します。

于 2019-08-22T16:37:05.980 に答える