2024年4月5日金曜日

定番のソフトウェアスイートですから、エクセルもワードもVBAで簡単に連携できたりします ー OfficeWord(VBAマクロ)

    
エクセルで作表をして、実際に印刷するとその位置がずれたと感じたりします。
これは、モニター画面や印刷見本の表示を見ても、差が出ないレベルなんだな。

ですが、正確に印刷の位置を決めたい場合、特にタックシールならそうですね。
A4用紙のシールに切れ込みがあって、同じサイズの複数枚が取れると言う仕様。

この位置をはみ出さずに字句が印刷されるように、デザインを考える分けです。
そこで、住所録などのワークシートのデータから、シールにデータを流し込む。

昔だと、アドインソフトが使えましたが、現在は廃止されて不便になりました。
このため、ワークシートをA4用紙に見立てて、シールの位置を決めたりしたの。

セルに印刷する字句をコピペするようにマクロを組んで、いざ印刷させてみる。
ところが、印刷位置が多少ずれるので、文字が切れ込み線からはみ出たりした。

    
自分の場合、8センチX15センチ、三枚組の大きなタックシールがターゲット。
このシールには、出荷する製品や顧客の大事な情報が、書き込まれていますな。

それに、印刷位置がずれて字句が欠けているようでは見栄えが良くありません。
なので、ワーク―シートで印刷するのを取りやめて、ワードではどうだろうか。

色々と調べると、エクセルからワードを起動し、しかもマクロが動かせそうだ。
ワードでは、貼り付ける画像ファイルが、ポイント単位で正確に指定できます。

要するにワードの印刷見本は、ワープロの印刷の見栄えを重視しているわけだ。
なので、保存した画像を位置を指定して貼付けるワードのマクロを書きました。

というわけで、そのコードを紹介しておきますので、参考にしてみてください。
Office365のVBAで試しましたが、このマクロのコードをエクセルからVBAで動作させることもできましたので、次回は、その起動コードも併せて紹介しようと思います。

Sub ActvDocImgInsrt() 'アクティブ文書に画像を挿入
Dim i As Integer, FleLctn As String, Lft As Long
Dim Tp As Long, Wdth As Long, Hght As Long
  FleLctn = "フルパス付きのイメージ画像ファイル"
    Lft = 11 '注1:マージン設定後の印刷範囲内での位置指定です。
      Wdth = 403 '注2:Tp⇒上側開始位置、Lft⇒左開始位置。
        Hght = 210 '注3:Wdth⇒印刷巾、Hght⇒印刷高さ。
For i = 1 To 3 'タックシールが三枚なので同じシールの印刷
  Select Case i
    Case 1
      Tp = 10  '注3:単位はポイントで、1cm=28.35ポイント。
        Call PsteLctn(FleLctn, Lft, Tp, Wdth, Hght) 'プロシージャをコール
    Case 2
      Tp = 247
         Call PsteLctn(FleLctn, Lft, Tp, Wdth, Hght)
    Case 3
      Tp = 485
         Call PsteLctn(FleLctn, Lft, Tp, Wdth, Hght)
  End Select
Next i
End Sub

Sub PsteLctn(ByVal FleLctn As String, Lft As Long, Tp As Long, Wdth As Long, Hght As Long)
ActiveDocument.Shapes.AddPicture FleLctn, True, True, Lft, Tp, Wdth, Hght
End Sub

※ワードもモジュールの追加が可能。保存ファイル名の拡張子は、”.docm”。



いいねと思ったら、三つポチっとね!
にほんブログ村 スキースノボーブログへにほんブログ村 スキースノボーブログ スキーへにほんブログ村 旅行ブログ 旅日記・旅の思い出へ
にほんブログ村    にほんブログ村      にほんブログ村 



0 件のコメント:

コメントを投稿