Excel 2007 に 2010 年 6 月 29 日以降に公開された Office Art の修正プログラム パッケージを適用すると、[拡大縮小印刷] の [拡大/縮小] を100% 未満に設定したページの最下部に配置したオブジェクトが印刷されない場合がある

現象

Microsoft Office Excel 2007 に、以下の Office Art の修正プログラムを含む修正プログラム パッケージを適用後、 [拡大縮小印刷] の [拡大/縮小] を 100% 未満に設定した場合、ページの最下部に配置したオブジェクトが印刷されない場合があります。

この現象は、以下の 2010 年 6 月 29 日以降に公開された 2007 Microsoft Office system の修正プログラム パッケージのいずれかを適用して、Oart.dll のバージョンが 12.0.6539.5001 以降の場合に発生します。

983315  Office 2007 system 修正プログラム パッケージ (Oart-x-none.msp, Oartconv-x-none.msp) 2010 年 6 月 29 日 について
2028569  Office 2007 system 修正プログラム パッケージ (Excel-x-none.msp, Oart-x-none.msp, Powerpoint-x-none.msp) 2010 年 6 月 29 日 について
2028572  PowerPoint 2007 修正プログラム パッケージ (Oart-x-none.msp, Oartconv-x-none.msp, Powerpoint-x-none.msp) 2010 年 6 月 29 日 について
2203965  PowerPoint 2007 修正プログラム パッケージ (Oart-x-none.msp, Oartconv-x-none.msp, Powerpoint-x-none.msp, Pptconv-x-none.msp) 2010 年 6 月 29 日について

原因

この現象は、拡大縮小印刷の際に、セル上の文字列は縮小されるのに対して Shape などのオブジェクトの位置は、[拡大縮小印刷] が 100% の時点での位置として認識され、オブジェクトを配置した位置によっては印刷領域にオブジェクトが無いと判断されるために発生します。

回避策

この現象を回避するには、以下のいずれかの方法を実行してください。

方法 1 : レジストリを追加する

重要 : このセクション、方法、またはタスクには、レジストリの編集方法が記載されています。レジストリを誤って変更すると、深刻な問題が発生することがあります。レジストリを編集する際には十分に注意してください。万一に備えて、編集の前にレジストリをバックアップしておくと、問題が発生した場合にレジストリを復元することができます。バックアップおよび復元方法の詳細を参照するには、以下のサポート技術情報をクリックしてください。
322756 Windows でレジストリをバックアップおよび復元する方法

Excel 2007 を起動する前に、以下のレジストリを追加してください。

キー : HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Excel\Options 
値の種類 : DWORD 値
 
値の名前 : EnableFastBoundsCalc
 
値のデータ : 0


注 : このレジストリを追加すると、KB983315 に含まれる大量に図形を含むワークブックのカーソル キーのパフォーマンス改善の修正が無効となります。

方法 2 : マクロを実行する

印刷する前に以下のマクロを実行してください。

補足 : このマクロは、[A1] の左上の位置を起点に、シート上のすべての Shape を含むサイズの透明で暫定的な Shape を配置し、印刷領域にオブジェクトがあると認識させ、その結果、アクティブ シート上に配置された Shape が印刷されるようになります。
Sub BeforePrint()
Dim sglHeight As Double
Dim sglWidth As Double
Dim strPrintShapeName As String
Dim nExist As Integer
Dim CurrentRange

Set CurrentRange = Selection
strPrintShapeName = "PrintWorkaroundMacroKKKK"

If ActiveSheet.Shapes.Count = 0 Then
MsgBox "画像及びグラフがないので、印刷回避マクロを実行する必要がありません。"
Exit Sub
End If

sglHeight = 0
sglWidth = 0

For i = 1 To ActiveSheet.Shapes.Count
sglTemp = ActiveSheet.Shapes(i).Height + ActiveSheet.Shapes(i).Top
If sglTemp > sglHeight Then
sglHeight = sglTemp
End If
sglTemp = ActiveSheet.Shapes(i).Width + ActiveSheet.Shapes(i).Left
If sglTemp > sglWidth Then
sglWidth = sglTemp
End If
Next i

On Error GoTo MyErr
nExist = 0
If IsObject(ActiveSheet.Shapes(strPrintShapeName)) Then
nExist = 1
End If
MyErr:
Err.Clear

If nExist Then
ActiveSheet.Shapes(strPrintShapeName).Delete
End If

ActiveSheet.Shapes.AddShape(msoShapeRectangle, 0, 0, sglWidth, sglHeight).Select
Selection.Name = strPrintShapeName
Selection.ShapeRange.Fill.Visible = msoFalse
Selection.ShapeRange.Line.Visible = msoFalse

CurrentRange.Select
End Sub







 
補足 : 印刷後に以下のマクロを実行すると、暫定的に配置した Shape を削除できます。
Sub AfterPrint()
Dim strPrintShapeName As String
strPrintShapeName = "PrintWorkaroundMacroKKKK"
On Error GoTo MyErr
ActiveSheet.Shapes(strPrintShapeName).Delete
Exit Sub
MyErr:
Err.Clear
End Sub

詳細

問題の再現手順

  1. Excel 2007 起動し、シートのページ設定は既定のままとします。(例 : サイズ : A4、余白 : 標準設定、印刷の向き : 横)
  2. [ページレイアウト] タブをクリックし、[拡大縮小印刷] の [拡大/縮小] に 75 % と入力します。
  3. [挿入] タブをクリックし、[図] の [図形] から任意の図形をクリックして、シートのページ最下部に図形を挿入します。
  4. シートを印刷します。

結果

ページ最下部に配置した図形がプリンターもしくはファイルに出力されません。
プロパティ

文書番号:2375652 - 最終更新日: 2016/10/04 - リビジョン: 1

フィードバック