トップ回答者
VB.NETからエクセル→印刷プレビュー

質問
回答
-
押させないというより、押しても印刷してしまわなければいいならば、BeforePrintのイベントでキャンセルしてしまうだけです。
Public Class Form1 Dim WithEvents xla As Microsoft.Office.Interop.Excel.Application Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click xla = New Microsoft.Office.Interop.Excel.Application() xla.Visible = True Dim wb As Microsoft.Office.Interop.Excel.Workbook _ = xla.Workbooks.Add() Dim sh As Microsoft.Office.Interop.Excel.Worksheet _ = wb.ActiveSheet sh.Range("A1").Value = 1 allowPrint = True sh.PrintPreview() allowPrint = False End Sub Dim allowPrint = False Private Sub xla_WorkbookBeforePrint(ByVal Wb As Microsoft.Office.Interop.Excel.Workbook, ByRef Cancel As Boolean) _ Handles xla.WorkbookBeforePrint If allowPrint Then allowPrint = False Else Cancel = True End If End Sub End Class
#ReleaseComObjectなしの手抜き
コードからプレビューを表示するときだけキャンセルしないことでプレビュー表示されます。
#ちなみにマクロでこれと同じことさせるとExcelが落ちやすいです- 回答としてマーク ペニー 2011年5月22日 13:10
すべての返信
-
押させないというより、押しても印刷してしまわなければいいならば、BeforePrintのイベントでキャンセルしてしまうだけです。
Public Class Form1 Dim WithEvents xla As Microsoft.Office.Interop.Excel.Application Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click xla = New Microsoft.Office.Interop.Excel.Application() xla.Visible = True Dim wb As Microsoft.Office.Interop.Excel.Workbook _ = xla.Workbooks.Add() Dim sh As Microsoft.Office.Interop.Excel.Worksheet _ = wb.ActiveSheet sh.Range("A1").Value = 1 allowPrint = True sh.PrintPreview() allowPrint = False End Sub Dim allowPrint = False Private Sub xla_WorkbookBeforePrint(ByVal Wb As Microsoft.Office.Interop.Excel.Workbook, ByRef Cancel As Boolean) _ Handles xla.WorkbookBeforePrint If allowPrint Then allowPrint = False Else Cancel = True End If End Sub End Class
#ReleaseComObjectなしの手抜き
コードからプレビューを表示するときだけキャンセルしないことでプレビュー表示されます。
#ちなみにマクロでこれと同じことさせるとExcelが落ちやすいです- 回答としてマーク ペニー 2011年5月22日 13:10