前回の投稿に続いて、セル範囲を180度回転させてから画像を保存する話です。
この方法は、シェイプの画像保存よりも、簡単なマクロコードになっています。
シェイプは、各々を配列にまとめて”Range”として設定するのが少し複雑だな。
これに対して、今回はセルに入力された内容の範囲を指定するだけなので簡単。
ネットから紹介されているコードを、色々と参考にしながらまとめてみました。
それで、宛名書きにセルの内容を使う時は、セルの枠線を消しておくのが肝心。
簡単な宛名の印刷なら、こちらのセル範囲を使ってデータを流し込むの便利ね。
複雑な構成のデザインなら、文言の配置が自在になるテキストボックスだろう。
なので、どちらが適当なのかは、コードを書く時に判断していただきましょう。
そこで再説しますが、要点は封筒のあて名書きの書く方向次第だという事です。
封筒をプリンターの手差しトレイで印刷して、封のベロを左に見て書く場合ね。
手差しトレイでは、封筒を底部からセットしますので、この工夫が必要な分け。
まあ、ここまでやる必要があるのかどうかは分かりませんが、理由があるのだ。
出荷製品の領収書を同封する封筒を印刷するコードが必要になるかもしれない。
この話は、社内で一度持ち上がりましたが、作っている最中で沙汰闇になった。
だって、メインフレームシステムでも印刷できるからという話ではあったのよ。
なので、コードを書いても使うかどうかは分かりませんが、暇つぶしに準備だ。
というわけで、ワードとエクセル連携で、まともな封筒印刷ができるお話です。
これに関連したVBAの投稿は、連続してアップしているので、通して読んでいただければ、マクロの図形絡みで処理する奥義を理解していただけると、自画自賛の自分なのでした。
※参考マクロコード
Sub RngChartSve() 'セル範囲をチャートに載せて画像保存
Dim Rng As Range, Chrt As chart, ChrtNme As String
ActiveWindow.DisplayGridlines = False 'セルのグリッド線消去
Set Rng = Range("A1:E5")
ChrtNme = "C:" & Environ("HOMEPATH") & "\Downloads\" & "CellPict.png"
Rng.CopyPicture
Set Chrt = ActiveSheet.ChartObjects.Add(0, 0, Rng.Width, _
Rng.Height).chart 'セル範囲をカバーするチャートオブジェクトを追加
With Chrt
.Parent.Select
.Paste 'シート上に表示
ActiveSheet.ChartObjects(1).chart.ChartArea.Format.Line.Visible _
= msoFalse 'オブジェクトの外枠線消去
Selection.ShapeRange.IncrementRotation 180 '180度回転
.Export ChrtNme 'チャートを保存
End With
ActiveSheet.ChartObjects(1).Locked = False 'シート上に1つだけの認識
ActiveSheet.ChartObjects(1).Delete
ActiveWindow.DisplayGridlines = True 'セルのグリッド線表示
End Sub
0 件のコメント:
コメントを投稿