2024年4月19日金曜日

マクロの図形絡みで処理する奥義を、ご披露したいと思って、シコシココードを作ってみたのでござる ー Shape & ChartObject(VBAマクロ)

            
前回の投稿に続いて、セル範囲を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 件のコメント:

コメントを投稿