アプリ版:「スタンプのみでお礼する」機能のリリースについて

ExcelVBAの初歩的な質問になります。例えば印刷サイズをA4サイズとして印刷の行と列の幅を取得したいです。4×4の均等なセルを作るとします。印刷のサイズが分かれば4等分したサイズをセルに設定すればいいと思います。印刷サイズや均等なセルの値を変数また配列にしたいと思っています。この場合にはやはり印刷サイズが決まった時点の列幅と行幅をどの様に取得すればいいのでしょうか?オブジェクトの参照設定によるインスタンスの作成でできることなのでしょうか?また、WidowsAPIによるサブルーチンではなにを使用することで取得することができるのでしょうか?よろしくお願いします。

A 回答 (2件)

こんにちは



>WidowsAPIによるサブルーチンではなにを使用することで取得することができるのでしょうか?
なぜに、APIがでてくるのかしらん?
印刷はExcelのハンドリング内のことなので、Excel VBAの範疇ではないでしょうか?

>ExcelVBAの初歩的な質問になります。
多少の誤差を許すのであれば、以下の手順で算出は可能です。
質問者様にとっては初歩的なことかもしれませんが、私にとっては、結構面倒な内容に思われます。

以下、試してみた手順ですので、ご参考までに。
◇準備作業として、調査用のシートを作成します。
・新規シートでも良いですし、対象シートの複製でも良いです。
・各セルを許容誤差範囲の小さなサイズに設定します。
 (このサイズ以下の寸法は許容誤差として考えてください)
・プリントの向き、サイズの設定 など(余白等)必要な設定を行います。
 (PageSetup.Orientation、PageSetup.PaperSize etc.)
・必要なら、既存の改ページを削除
 (ResetAllPageBreaks)
・印刷範囲を十分に大きな範囲(=必ず1ページ以上となる範囲)に設定
 (PageSetup.PrintArea)

◇上記から1ページの行数、列数を算出する
 (以下は行数の場合の手順。列数も同様。)
・改ページ位置から、1ページ目の行数を算出
 (HPageBreaks)
・求めた「行数×設定セル高さ」で、1ページ分の長さを算出できますので
 求めるセル高さは、これを1/4にした値となります。
・高さ、幅を算出したら、調査用シートを削除。

※ 非表示の行や列はないものと想定しています。
  存在する場合は、それも考慮する必要があるでしょう。
※ どうしてもピッタリの数値が欲しければ、改ページ付近のセルサイズを
  さらに細かくして、再度同様の計算を行えば、精度を上げることが
  できるでしょう。
(こちらの方法をとるなら、最初にセルサイズを小さく設定する必要はありませんね)


一方で、余白やヘッダー、フッター等が一定なら、用紙のサイズや向きの種類数はたかが知れているので、わざわざ都度調べるようなことをしなくても、事前に表にでもしておけば済む話ではないかと推測します。
まぁ、余白やヘッダー等のサイズがその都度変わる様であれば、仕方がないですけれど・・
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます。仕様を決める際に問題をシンプルにしてコードを考えています。本題は少し複雑なので一つ一つ解決して行こうと思います。また、ソースコードを決める際には複数の候補があると思っています。いろいろな方のお知恵を借りて解決できたら幸いです。参考にさせて頂きます。助かります。

お礼日時:2022/01/27 21:01

それって、初歩的なことなんですかね?


できる気がしないんですけど。
私が無知なだけだったら、ごめんなさい。
    • good
    • 0
この回答へのお礼

経験が豊富な方などからするとソースコードのアプローチで困っている為に初歩的と記載をさせて頂いています。ご回答される方を想定してのことです。お気遣いありがとうございます。

お礼日時:2022/01/27 21:09

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています