dポイントプレゼントキャンペーン実施中!

■私の質問
前回質問した内容について、再質問です。
●印刷範囲指定については、追加記載〔〕あります。

前回の質問:https://oshiete.goo.ne.jp/qa/9445443.html


Excel VBAで、以下のようなことをしたいです。

前置き:
Excelのシートで、一覧があります。
この一覧は、事前にA4の紙四枚に印刷出来るように印刷範囲、改ページの設定をしてあります。
●印刷範囲指定
・a4縦に印刷
・一覧は、横長12列(1ページ) x 4ページ分が〔横方向に展開されていて〕、印刷範囲に指定
 〔※通常は縦方向かもしれませんが、これは横方向に作成されています。〕

このシートを、別のブックに保存でコピーして、ブックが表示されると
この改ページが結構乱れていて、指定していたようなa4 x 4枚の紙に印刷出来ません。

それを、vbaコードである程度修正したましたが、それでも、
横に破線が一本表示されてしまい、そこで、改ページされてしまいます。

手動ならば、この破線をマウスで下にスクロールして、消す事は出来ますが、それをvbaで消したいのですが、どうすれば良いでしょうか。消すというのは削除するということです。
その破線が、どの行のbOTTOM部分に位置しているか判断する方法がわかりませんので、vbaでその破線をスクロールするのは難しそうですし、消す方法もわかりません。

よろしくお願いします。


■WindFallerさんのご回答に対する質問

WindFallerさんのご指摘大変参考になります。が、私の方で自分で作成したSelection_Changeのイベントのコードをコメント化した上で、シートを新規ブックにコピーしてテストをしてみました。
1) 印刷範囲が、説明済みのとおりおかしくなる。破線の横線が出る。
2) トップマージンを1.9から1.4に変更し、拡大率を100%にしてから、シートを新規ブックにコピーする
3) 印刷範囲がまたずれる。この時、ページ設定をみると、
 変更前:上1.9, 下2, 左2.5, 右2.2で、拓大率が99%, A4
 変更後:上1.4, 下2, 左2, 右1.7で、拡大率が100%, A4
 新規ブックにコピーした時の設定
    →変更後と同じ
 手動で、縦と横の破線をドラッグしてなくすと、ページ設定は以下のとおりとなりました。
     上1.4, 下2, 左2, 右1.7で、拡大率が 81%, A4



この変わり方が意味がわかりません。何故、拡大率が81%となるのか。
最初は、99%または、100%できちんとA4に入っていたのが、新規ブックにコピーすると、このように81%になってしまいます。
これは、もともと、オリジナルのファイルで、拡大率が99%で1ページに入っていたようにみえてますが、実は、1ページに収まらない範囲であるというのが正解なのでしょうか?
何故、このように新規ブックにコピーすると、拡大率が意味不明な変化の仕方をするのでしょうか。

この挙動について、もし、お分かりになれば、ご説明お願いします。
この質問は既に、解決済みですので、新規で質問を作成します。

よろしくお願いします。

「ExcelVBA 改ページの横破線を消す」の質問画像

A 回答 (5件)

ちょっとコメントします。


また、もう一度書かせていただくことになるでしょうから、その時まで、個別に返事は不要です。(手前勝手すみません)

>エクセルの場合、印刷設定、印刷範囲をVBAでするということ自体がナンセンスだと言うことになりますね。

古い時代にMicrosoft は、どこかで分岐点があったようです。もともとは、IBMのスタッフを借りて表計算開発していたという歴史はありますが、そのIBMのスタッフは、そんな曖昧な方法は認めていなかったようです。アプリをグローバル化する時に、プリンター設定は、ユーザーにお任せしてしまったのです。

その後、VBAが搭載されたものの、Excelと一体になっているわけではなく、インターフェイスを通して搭載していますから、ハード側の制御がほとんど利きません。VBAで、Excel95 からの歴史で、少なくとも2007までは、実は、うまく制御できないバグらしきものがあったようです。何か、ここに本音と建前のようなものがあるような気がしてならないのです。

昨日、回答してから後も、Excel 2003と、Excel 2013 とのPixcel とPoint の違いを記録で比較してみると、数%の違いがあることが分かりました。

この解決方法は、本当は、プリンターのハード側の情報を取得ところから始まっているのだろうと思います。この私が、直接扱うような、そんな技術はないものの、あれから、10年以上も経って、そのままだということもないだろうという、「私の甘い期待」が、話をながのばせているということなのです。
    • good
    • 0
この回答へのお礼

ふむふむ・・・

お礼日時:2016/11/10 10:50

こんばんは。



この件は、Excel2000時代ですが、ずいぶん私も研究したことがあります。そして、今、私自身分の考えだと思っていた話も、実はネットの情報からだということに再確認しました。

ちょっと話がずれていると思われる部分があるのは、お許しください。

[エクセル+固有のPCの設定+固有のプリンター]との組み合わせで、印刷の設定が決まるものだ、というのが定番の解答です。
https://support.microsoft.com/ja-jp/kb/400271

「 セルの幅・高さは、ピクセルという単位で表示されますが、これは「画素」という意味で、表示や印刷での小さな色の点のことです。センチメートルのような長さの単位ではありません。1ピクセルが何センチになるかはディスプレイやプリンタの設定によって変化します。」Microsoft

ただし、標準フォントとそうでないフォントが交じると、また狂い始めるという現象もあります。等幅フォントとプロポーショナルフォントでも違いが出てきます。(「標準フォントスタイルは、10~12までです。」:私の記録)

プリンター側から物理的印刷の限界という情報を、反映して割り振っていることは分かります。

シートコピーでもうまくいないのは、
>このようにはいかず、やはり、印刷範囲がずれてしまいます。

それは、その定番の[エクセル+固有のPCの設定+固有のプリンター]の組み合わせが変わったからでしょう?それぞれのPC+プリンターの組み合わせフォーマットを置いて置かないと無理かもしれません。

http://www.asahi-net.or.jp/~ef2o-inue/kihon/sub0 …
(以下は、昔の『エクセルでお仕事』の私の記録です)
 ページ設定は必ず行なう
 印刷プレビューで余白を調節 
 100%で表示・印刷できるのが原則
  -最初から縮小して表示したり、ページ設定したりするのでは無意味

 行数が固定しないシートは罫線を引かない
 セルの書式は「標準」にままにしない

http://hp.vector.co.jp/authors/VA016119/sizemmqa …
セルの大きさについての Q&A (芳坂和行さんサイト)

歴史の話始めると長くなるので割愛しますが、かつてはピタッと納まる時代もあったのだから、不思議な話です。

私が、VB6をやっていた時にも、かなりの精度で印刷が納まるので、「定番の解答」には、どこかにウソがあるのではないかと思いました。そもそも、ラベル印刷アプリなどは、1mmの精度で印刷するのですから、ズレましたなんていうことは、ほとんどありません。それでも、試し印刷での調整は必須です。

どうやら、エクセルの場合は、セルの積み重ねで、按分していくような仕組みになっているので、どうしても、うまくいかないのです。(これも芳坂さんのサイトからでした。なお、罫線の太さも勘定に入れなくてはならないことでした。)

私が書いている話というのは、アプリがパスしても、最終的には物理的に印刷が収まらなければ解決しないのだろうということです。
仮に手動調整であるにしても、自動改ページが規定の場所に改ページが来ていないズレぐらいでしたら、メッセージを出すことは可能です。

出来ない理由をいくつ挙げてもしょうがないのですし、私もずいぶん研究し尽くしている話ですが、この件は、もう少し考えてみましょう。
    • good
    • 0
この回答へのお礼

このご説明が一番納得行く内容で、しっくりしました。ということは、やはり、エクセルの場合、印刷設定、印刷範囲をVBAでするということ自体がナンセンスだと言うことになりますね。

それをやって全て自動で出来るようにしてよ、というユーザの要望はあまりにも無理な話という事になります。このような要望については、対応方法というものを決めていかなくてはいけないと思いました。

大変ありがとうございます。

この質問はもう少しクローズシないでおきます。

お礼日時:2016/11/08 10:29

WindFaller です。



>新規ブックにコピーすると、拡大率が意味不明な変化の仕方をするのでしょうか。

> 手動で、縦と横の破線をドラッグしてなくすと、ページ設定は以下のとおりとなりました。
>     上1.4, 下2, 左2, 右1.7で、拡大率が 81%, A4

どうみても、上マージン・左マージンの認識がされていないとししか思えません。
Excel自体で、ハード側の物理的マージンを認識して、その後で、Excel側で、それを処理するというわけですが、それは、一旦、印刷プレビューを通したものが条件のはずですから、印刷プレビューでご覧になっていないのではないかと思います。

もう一つ、新規ブックのコピーですが、シートタブを右クリツクして、
移動またははコピーを選び、新規ブックを選んでコピーするようにします。そうすれば、設定などは、そのまま移行するはずです。

私は、前もお話したとおり、私の経験で、ページの拡縮は、事務書類全体の管理として原則としていじらないことにしています。

Excelの印刷は、VBAの領域では届かないことがありますので、手動で処理するのが一般的です。

また、私が、それ(破線)を直す方法としては、実際は、印刷プレビューのところのラインをいじって入るようにさせています。印刷の拡縮には影響が出ません。
添付画像
「ExcelVBA 改ページの横破線を消す」の回答画像3
    • good
    • 0
この回答へのお礼

なるほどですね。おっしゃることは良くわかりました。
印刷の設定というのは、手動でやるのが普通と。印刷をVBAでやろうとすると、うまくいかない時があります・・・ということですね。

確かに、挙動不審なところがエクセルにはありますので、なかなか微妙なところまで調整しろと言われても、難しい時があります。

>一旦、印刷プレビューを通したものが条件のはずですから、
>印刷プレビューでご覧になっていないのではないかと思います。

ここの部分ですが、ユーザは、印刷プレビューなど使っていません。
使い方も知りません。
しかし、この印刷範囲のずれは、お勧めの方法でコピーした時に、コピーした新規ブックが開くと、既に印刷範囲の設定がずれております。
それを、印刷プレビューを開き、上マージンを調整したりすると、縮小率が前出の通り小さくなってしまうのです。

恐らく、ご指摘の通り、エクセルが印刷範囲に指定した部分の範囲を適切に認識出来てないということなのでしょうか。(▼)
>どうみても、上マージン・左マージンの認識がされていないとししか思えません。


>もう一つ、新規ブックのコピーですが、シートタブを右クリツクして、
>移動またははコピーを選び、新規ブックを選んでコピーするように
>します。そうすれば、設定などは、そのまま移行するはずです。

ですので、上のお勧めの方法が、利用者が実際にコピーする時の操作方法になります。

>そうすれば、設定などは、そのまま移行するはずです。
このようにはいかず、やはり、印刷範囲がずれてしまいます。

エクセルはパソコンによっても動作が変わる場合があるので(当社の場合)、なかなかこの辺の解決は難しいです。

ですので、お話されたとおり、手動でなおすというのが解決策かと私も思いました。

アドバイス、ありがとうございます。

お礼日時:2016/11/07 09:40

乱れてしまった改ページを直すより、乱れないようにコピーすることを考えた方が早そうな気がするのですが、「別のブックに保存でコピー」と

は、どんな手順で行っているのでしょうか?
    • good
    • 0
この回答へのお礼

それは、シートタブを右クリックで、コピーを選択して、コビー先を新しいブックを選択して、実行しています。
手動です。

お礼日時:2016/11/06 11:32

直接回答ではありませんが、ページ設定ですが、印刷に設定されているプリンターの影響も受けてしまいます。

同じ環境でないと難しいかもしれません。
    • good
    • 0
この回答へのお礼

プリンターは、確かに、新しいプリンターを購入し使用しています。その影響があるのでしょうか・・・

お礼日時:2016/11/06 11:32

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