作成日: 2017/08/24 最終更新日: 2017/12/22
文書種別
不具合
状況
修正済み
詳細
この現象は、SPREADに複数のシートが存在し、画像を含むExcelファイルをインポートしたシートが、一度もアクティブにならない状況で印刷されたときに発生します。
【実行手順】
1. 次の条件を満たすExcelファイルを準備します:
- シートが1つ
- 画像が配置されている
※サンプルコードの設定では、ファイル名を
「ExcelWithImageFile.xlsx」として
プロジェクトフォルダに配置しています
2. SPREADとButtonを配置します
3. 以下のサンプルコードをコピーして実行します
4. Buttonをクリックします
--- 2つ目のシートの印刷時に
「オブジェクト参照がオブジェクト インスタンスに設定されていません」
のエラーダイアログが表示れます。
【サンプルコード】
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' シートの設定
FpSpread1.Sheets.Clear()
For i As Integer = 0 To 2
FpSpread1.Sheets.Add(New FarPoint.Win.Spread.SheetView(String.Format("Sheet{0}", i + 1)))
FpSpread1.Sheets(i).OpenExcel("..¥..¥ExcelWithImageFile.xlsx", 0)
FpSpread1.Sheets(i).SheetName = String.Format("s{0}", i + 1)
Next
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
' 印刷の実行
FpSpread1.PrintSheet(-1)
End Sub
【実行手順】
1. 次の条件を満たすExcelファイルを準備します:
- シートが1つ
- 画像が配置されている
※サンプルコードの設定では、ファイル名を
「ExcelWithImageFile.xlsx」として
プロジェクトフォルダに配置しています
2. SPREADとButtonを配置します
3. 以下のサンプルコードをコピーして実行します
4. Buttonをクリックします
--- 2つ目のシートの印刷時に
「オブジェクト参照がオブジェクト インスタンスに設定されていません」
のエラーダイアログが表示れます。
【サンプルコード】
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' シートの設定
FpSpread1.Sheets.Clear()
For i As Integer = 0 To 2
FpSpread1.Sheets.Add(New FarPoint.Win.Spread.SheetView(String.Format("Sheet{0}", i + 1)))
FpSpread1.Sheets(i).OpenExcel("..¥..¥ExcelWithImageFile.xlsx", 0)
FpSpread1.Sheets(i).SheetName = String.Format("s{0}", i + 1)
Next
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
' 印刷の実行
FpSpread1.PrintSheet(-1)
End Sub
回避方法
Service Pack 2(v10.0.4006.2012)で修正済み。
Service Pack 2より前のバージョンでは次の回避方法が有効です。
------------------------------------------
シートの印刷時、すべてのシートを一度、アクティブに設定してから印刷します。
【サンプルコード】
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
'【回避方法】各シートをアクティブに設定-------
For i As Integer = 0 To FpSpread1.Sheets.Count - 1
FpSpread1.ActiveSheetIndex = i
Next
FpSpread1.ActiveSheetIndex = 0
'【回避方法】ここまで-------------------------
' 印刷の実行
FpSpread1.PrintSheet(-1)
End Sub
Service Pack 2より前のバージョンでは次の回避方法が有効です。
------------------------------------------
シートの印刷時、すべてのシートを一度、アクティブに設定してから印刷します。
【サンプルコード】
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
'【回避方法】各シートをアクティブに設定-------
For i As Integer = 0 To FpSpread1.Sheets.Count - 1
FpSpread1.ActiveSheetIndex = i
Next
FpSpread1.ActiveSheetIndex = 0
'【回避方法】ここまで-------------------------
' 印刷の実行
FpSpread1.PrintSheet(-1)
End Sub
旧文書番号
40879