• ベストアンサー

Excel(VBA)で専用用紙に印刷

初歩的な質問で恐縮です。 今、ExcelのVBAである業務日報を作成しているのですが、印刷はある決まったフォーマットの用紙にデータだけを印字したいのです。 そうなると、座標を最小単位で指定する必要がでてくるわけですが、これをどうやればいいのかが分かりません。 ワークシートでセルのサイズを調整してやればいいのでしょうか? あるいは、VBAで専用フォームを作ればいいのでしょうか? 後者の場合だと座標指定は1/72インチ単位でかなりのズレが出てくると思うのですが、これ以下のサイズの指定はできるのでしょうか? 以上、よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 おそらくは、VBAだけでは無理だと思います。 >座標指定は1/72インチ単位でかなりのズレが出てくる いえ、それは、昔の話なのです。「1/72 インチ」ではなくて、もう、そういうプリンタとの連携がなくなってしまったのです。インチものさしも、今は、使えなくなってしまいました。 ワークシートを画像にするという方法もあるかと思います。画像にして、そのズレを、VBAで(実測して割合を出した数値を定数として代入し)補正してあげれば、かなりの精度にはなるはずです。しかし、既存のフォーマット(書式)に収めるというのは、ほとんど不可能です。 以下で示すようなユーティリティを用いて、印刷するという方法が、今は一般的のようです。なぜ、Excelでは出来ないか、というのは、セルには論理的な高さや幅というものがあって、それを、プリンタ・ドライバが持っている物理的な長さ・幅に丸められるのだろうと考えています。 http://oshiete1.goo.ne.jp/kotaeru.php3?qid=2646711

ita-roo
質問者

補足

ご回答いただき、ありがとうございます。 >もう、そういうプリンタとの連携がなくなってしまったのです なんと!これはショック。 ということは、 http://hp.vector.co.jp/authors/VA016119/sizemm.html ここにあるような印刷支援ソフトも使えないということなのでしょうか? 私が持っているのはExcel2000なのですが、それでもダメなのでしょうか?

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。#2 の Wendy02です。 >印刷支援ソフト このことには、あえて触れなかったのですが、ロジックとしては、 #2で説明した #VBAで(実測して割合を出した数値を定数として代入し)補正してあげれば、かなりの精度にはなるはずです。 私自身も、そのマクロは研究してみて、そういう結論的なものを出したのです。そのマクロ自体をお試しになってみればよいと思いますが、実際の、そのマクロの有用性は、作者さんには申し訳ないのですが、別売のユーティリティソフトと比較して、高くないように思っています。

ita-roo
質問者

お礼

度々ありがとうございました。 ご紹介いただいた方法は一度やっておけばずっと使えるので、一度やってみようと思います。

全文を見る
すると、全ての回答が全文表示されます。
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.1

>ワークシートでセルのサイズを調整してやればいいのでしょうか? が簡単だと思います。シェイプを貼り付けてそこに値を書き込むマクロを作成する方法はありますが、あまり現実的ではないでしょう。 本当ならACCESSを使用するべきだと思います。ACCESSならば印刷するフィールド単位に位置を設定できます。でもEXCELだと行、列の升目でしかサイズが調節できないので、どうしてもACCESSより自由度が低くなります。

ita-roo
質問者

お礼

ご回答いただき、ありがとうございます。 なるほど、かねてからExcelは印刷に弱いとは聞いていましたが、そもそも印刷という作業については最低限の機能しかないと考えた方がよさそうですね。 Accessとなると改めて購入する必要もあり、やや敷居が高いのですが、この際にOpenOfficeでも始めようかと思っています。

ita-roo
質問者

補足

早速のご回答、ありがとうございます。 「現実的ではない」ということは、「かなりの手間がかかる」ということでしょうか? しかしながら私には結構分かりやすい方法だと思えますので、一度やってみようかとも思っています。 ACCESSは…購入予定がありません。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • ぴったり印刷するエクセルVBAをつくるには

    用紙サイズやマージンを指定して、1ページに最大倍率で印刷する方法はないでしょうか?(自動的に) 以前「QNo.2677602 ExcelVBA、印刷ページを事前に知るには 」で教えていただいた i = Application.ExecuteExcel4Macro("GET.DOCUMENT(50)") を利用して次の動作をするVBAマクロを作りました。 PageSetupでZoomに100を指定し、1ページに収まるかどうか調べる。 1ページ内の時は1ページを越えるまでZoomを+1し越えたら-1する。 1ページ以上の時は1ページになるまでZoomを-1する。 これで上手くいくと思ったら、動くことは動くのですが、結果は大き過ぎたり小さすぎたりして、後で手作業で調整しなければなりません。 実行速度も非常に遅いです。 うまくやる方法はないものでしょうか? よろしくお願い申し上げます。

  • VBAでユーザー定義用紙サイズの値を取得する

    現在、Excelで出荷伝票(連続用紙)を印刷するVBAを作成しています。 [プリントサーバ-のプロパティ]に登録している「出荷伝票 幅9インチ 高さ4インチ」を用紙サイズに指定したいのですが、VBAを実行するパソコンが変わると「ActiveSheet.PageSetup.PaperSize」に設定される値も変わってしまうため、どうすれば良いのか悩んでいます。 理想としてはVBAを実行するとその都度「出荷伝票」の用紙サイズ(コード)を取得しPaperSizeに設定できれば良いのですが、そのような方法をご存知の方がおられましたらご教示のほどよろしくお願い致します。

  • 専用用紙の右端が印刷できなくて困っています

    専用用紙の右端が印刷できなくて困っています。 EPSON VP-4300で専用用紙の横幅15インチ(38.10cm)ですが 27cmあたりで切れてしまい印刷ができません。 サイトやマニュアルにある「プリントサーバープロパティ」も設定していますが できません。 プリンタープロパティのデバイスの設定で、用紙サイズを指定してもできません。 また、プリンタープロパティの全般の利用可能な用紙が、A4しか表示されません。 どうぞ、よろしくお願いします。 ※OKWaveより補足:「EPSON社製品」についての質問です。

  • VBからEXCELで印刷するときにユーザー設定用紙を設定したい

    こんにちわ。 VBからEXCELにデータを書き込み、印刷したいのですが、 EXCELはフォーマットシートをあらかじめ作成し、それを開いてデータを埋め込んでいます。 そのとき、フォーマットシートのほうでは用紙サイズをユーザー設定にして幅・高さを指定しているのですが、違うプリンタで印刷すると、A4サイズになってしまいます。 VBから用紙のサイズを設定できる方法はあるのでしょうか? よろしくお願いします。

  • 連続紙を印字するときの用紙設定の高さの設定について

    ドットプリンタで連続紙を印刷するため、Windowsの「プリントサーバのプロパティ」→「用紙」で、用紙の高さを設定することがあります。独自のサイズの用紙を用いる場合です。 1) ページ毎に行の印字位置がずれると困るため、正確に用紙の高さを設定する必要がありますが、cmの単位で小数第二位までしか設定することができないように思われます【添付図の1】。 すると、0.01cm÷2=0.005cmですから、例えば用紙を20枚連続して印字した場合、0.005cm×20=0.1cmということで、どんなに頑張っても意図している印字位置より最大1mmずれが生じる可能性があると思われます。このような認識でよろしいでしょうか。 連続紙を300ページ分連続して印字するような用途を考えると、かなり対応が難しくなると思うのですが… 2) プリンタドライバをインストールすると、連続紙の規定の用紙サイズがいくつか表示されます。このとき、例えば6 2/3inchのように分数で表わされるサイズを設定したいとき、【添付図の2】のようにたまたま表示窓のなかに該当するものがあれば、【添付図の1】の箇所で十進法で小数第二位まででサイズを設定するより、さらに正確に動作すると考えてよろしいでしょうか。

  • フォームの詳細の高さをvbaで!

    アクセスのフォームの詳細の高さを プロパティシートで確認した時に高さが5cmとなっているのですが、 これを、VBAで指定する場合、どうすればいいのですか??? Private Sub Form_Open(Cancel As Integer) Me.詳細.Height = "5cm" End Sub にすると、型が一致しません。 と言われます。 ヘルプを見ると 値の単位は twip (twip : 画面上の長さの基本単位。1 論理 cm は 567 twip、 1論理インチは 1,440 twip です。ここで論理 cm および論理インチとは、 画面上に表示されているものを印刷したときに、 それぞれ 1 cm および 1 インチになる長さを指します。) です。 との事なのですが、 5cmにしたい時は、何twipを指定してあげればいいのでしょうか? その計算式なども教えて頂ければ助かります。

  • エクセルでエクセルへ差込印刷

    エクセルのデータベースを別シートのエクセル(雛形)へVBAで自動印刷させようと思うのですが、雛形の範囲がA4サイズの9分の1しか無く、シート単位で印刷設定すると余白だらけで、A4用紙がもったいないです。 たとえば、同じ雛形をA4サイズに9つ作成し、そこにデータベースの1~9を表示させ、印刷を行う。それ以降のデータも同じ雛形に9つ分のデータを表示させ、印刷を行うようにしたいのですが、可能でしょうか? VBAは、まだ、初歩的なことしか作成出来ない為、分かり易く、教えていただけると幸いです。

  • テキストファイルの用紙サイズを指定するVBA

    テキストファイルの用紙サイズを指定するVBAを教えてください あるファイルの用紙サイズを決定するときにファイル→ページ設定→用紙サイズとダイアログをひとつずつ開いていってA5などと選択しなおしますが これをワンクリックで決定できるようなVBAコードを教えてください 宜しくお願い致します。

  • 【VBA】ユーザーフォームのサイズ状態の取得について

    いつもお世話になっております。 現在、VBAにてユーザーフォームのサイズ状態を知る方法を探しています。 操作しているユーザーフォームが最小化、最大化状態であることを知る構文はありますでしょうか。 宜しくお願いいたします。

  • VBA トグルボタンで楕円表示 非表示方法

    お世話になります VBAユーザーフォーム内でトグルボタンを生成しクリック時に セル指定及び座標表示、非表示をさせたいのですがわかる方よろしくお願いします。 又、同じフォーム内で複数使用します

専門家に質問してみよう