
ExcelVBAの初歩的な質問になります。例えば印刷サイズをA4サイズとして印刷の行と列の幅を取得したいです。4×4の均等なセルを作るとします。印刷のサイズが分かれば4等分したサイズをセルに設定すればいいと思います。印刷サイズや均等なセルの値を変数また配列にしたいと思っています。この場合にはやはり印刷サイズが決まった時点の列幅と行幅をどの様に取得すればいいのでしょうか?オブジェクトの参照設定によるインスタンスの作成でできることなのでしょうか?また、WidowsAPIによるサブルーチンではなにを使用することで取得することができるのでしょうか?よろしくお願いします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
こんにちは
>WidowsAPIによるサブルーチンではなにを使用することで取得することができるのでしょうか?
なぜに、APIがでてくるのかしらん?
印刷はExcelのハンドリング内のことなので、Excel VBAの範疇ではないでしょうか?
>ExcelVBAの初歩的な質問になります。
多少の誤差を許すのであれば、以下の手順で算出は可能です。
質問者様にとっては初歩的なことかもしれませんが、私にとっては、結構面倒な内容に思われます。
以下、試してみた手順ですので、ご参考までに。
◇準備作業として、調査用のシートを作成します。
・新規シートでも良いですし、対象シートの複製でも良いです。
・各セルを許容誤差範囲の小さなサイズに設定します。
(このサイズ以下の寸法は許容誤差として考えてください)
・プリントの向き、サイズの設定 など(余白等)必要な設定を行います。
(PageSetup.Orientation、PageSetup.PaperSize etc.)
・必要なら、既存の改ページを削除
(ResetAllPageBreaks)
・印刷範囲を十分に大きな範囲(=必ず1ページ以上となる範囲)に設定
(PageSetup.PrintArea)
◇上記から1ページの行数、列数を算出する
(以下は行数の場合の手順。列数も同様。)
・改ページ位置から、1ページ目の行数を算出
(HPageBreaks)
・求めた「行数×設定セル高さ」で、1ページ分の長さを算出できますので
求めるセル高さは、これを1/4にした値となります。
・高さ、幅を算出したら、調査用シートを削除。
※ 非表示の行や列はないものと想定しています。
存在する場合は、それも考慮する必要があるでしょう。
※ どうしてもピッタリの数値が欲しければ、改ページ付近のセルサイズを
さらに細かくして、再度同様の計算を行えば、精度を上げることが
できるでしょう。
(こちらの方法をとるなら、最初にセルサイズを小さく設定する必要はありませんね)
一方で、余白やヘッダー、フッター等が一定なら、用紙のサイズや向きの種類数はたかが知れているので、わざわざ都度調べるようなことをしなくても、事前に表にでもしておけば済む話ではないかと推測します。
まぁ、余白やヘッダー等のサイズがその都度変わる様であれば、仕方がないですけれど・・
アドバイスありがとうございます。仕様を決める際に問題をシンプルにしてコードを考えています。本題は少し複雑なので一つ一つ解決して行こうと思います。また、ソースコードを決める際には複数の候補があると思っています。いろいろな方のお知恵を借りて解決できたら幸いです。参考にさせて頂きます。助かります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
確定申告しなかった・無申告の人をどうやって見つけるのか元国税調査官に聞いてみた
無申告の方などを対象に税務調査を行う国税局の元税務調査官さんに、どう無申告を探すのか聞いてきました。
-
VBA 行入力について
Visual Basic(VBA)
-
【関数orVBA】カーソルのある行を黄色にし、A列の値を別シートに表示できますか?
Visual Basic(VBA)
-
ハイパーリンクを値貼り付け
Excel(エクセル)
-
4
エクセルのセル中で最初の0を表示する方法
Excel(エクセル)
-
5
【Excel VBA】変数の内容を変えながら繰り返す処理
Visual Basic(VBA)
-
6
VBAオートフィルターについて
Visual Basic(VBA)
-
7
エクセルの都道府県名連続入力を抽出削除するには
Excel(エクセル)
-
8
Excel 行高さと列幅について
Excel(エクセル)
-
9
【VBA】関数の宣言なしにプロシージャは動く?
Visual Basic(VBA)
-
10
VBAでのVlookupの扱い方
Visual Basic(VBA)
-
11
式の結果が0の時に空白にしたセルと、別のセルを足した結果を出す場合
Excel(エクセル)
-
12
元データから連続5日以上だった人を抽出したい
Excel(エクセル)
-
13
worksheet changeイベント
Excel(エクセル)
-
14
【Excel VBA】セルの色によって書き込み禁止などの処理は可能?
Visual Basic(VBA)
-
15
vbsでファイルを非表示
Visual Basic(VBA)
-
16
マクロ作成で困っています。お教え頂けませんか。
Excel(エクセル)
-
17
VBAでtxtファイルを読み込む際にtabを認識したい
Visual Basic(VBA)
-
18
【Excel】エラー解消をお願いします…。
その他(Microsoft Office)
-
19
Excel教えてほしいです。
Excel(エクセル)
-
20
サブフォルダ含むすべてのフォルダの Excel 検索
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
EXCELのVBA-フィルタ抽出後の...
-
5
ExcelVBAの複数指定範囲の構文
-
6
vbsのセル値の取得について
-
7
Excel VBA、 別ブックの最終行...
-
8
TODAY()で設定したセルの日付...
-
9
エクセルの複数データーをダブ...
-
10
ExcelのVBAで数字と文字列をマ...
-
11
【VBA】指定したセルと同じ値で...
-
12
3桁または4桁の数値を時刻に...
-
13
セル色なしの行一括削除
-
14
【VBA ・ エクセル】 テキスト...
-
15
エクセルVBAで、非表示にし...
-
16
EXCELで変数をペーストしたい
-
17
ExcelVBAで、選択範囲内で同じ...
-
18
同じマクロのプログラムなのに...
-
19
エクセル マクロで セルの範...
-
20
エクセルvba:自己セルの情報取...
おすすめ情報
公式facebook
公式twitter