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

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

前置き:
Excelのシートで、一覧があります。
この一覧は、事前にA4の紙四枚に印刷出来るように印刷範囲、改ページの設定をしてあります。
●印刷範囲指定
・a4縦に印刷
・一覧は、横長12列 x 4が、印刷範囲に指定
・1ページ内に、12列含む、縦長のa4に印刷

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

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

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

よろしくお願いします。

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

A 回答 (4件)

ANo1です。



>それを、vbaコードである程度修正したましたが・・・
とありましたので、A4にきちんと収まるように修正がなされていて、改ページ位置だけがうまく調整出来ないという状況かと思いましたが、どうやら違うのかも知れませんね。

どのような方法でコピーなさっているのかわかりませんが、改ページの設定をする前に、セルサイズやページ印刷の設定(余白など)についても、予定の内容に再設定しておかないと、改ページの位置を予定通りに設定できない場合があります。

あとは、設定の際にいきなり既存の改ページをキャンセルしようとしても物理的に無理な場合はできません。
再設定の手順としては、(確実に改ページできるとわかっている)予定の位置にまず改ページを設定したうえで、残りの不要な部分について削除する必要があります。
理由についてはANo2様が言及していらっしゃいますので省略。
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます。
なかなか、シートを別ブックに手動でコピーした時の印刷範囲の勝手に代わってしまう現象で、それをVBAで修正するのは大変な場合がありますね。
その場合に、汎用的に修正するのはかなり難しそうですが。

お礼日時:2016/10/09 20:17

こんばんは。



#2の回答者です。

>以下のようなソースで、移動させて消すことは出来ました。

DragOff(Direction, RegionIndex)
を使えば消えますね。改ページプレビューの時だけに働く機能です。

点線は、物理的に入らないというメッセージですが、マクロ的に、DragOffを使って、結果的に縮小が掛かるというわけです。

私は、あまり、そういうことは考えたことがありません。それで良い職場もあるとは思いますが、縮小は、言葉には出せないほどの苦い思い出があります。

想像どおりでしたが、
>ページレイアウトを見てみると、99%の拡大率で、上1.9, ヘッダー1.3, 右2.2, 左2.5, 下2, フッター1.3となります。

その設定で、自動改ページが出るのだったら、私は、物理的な調整をすると考えていました。上のマージンを調整をしますね。

以下をマクロでやるような人はいないと思いますが、このようなことを意味しています。


Sub PrintArrangement()
 Dim k As Long
 With ActiveSheet
  k = .PageSetup.TopMargin
  Do Until ExecuteExcel4Macro("COLUMNS(GET.DOCUMENT(64))") = 1
   k = k - 1
   If k < 3 Then Exit Do '適正値は知りません。
   .PageSetup.TopMargin = k
   DoEvents
  Loop
 End With
 If k >= 3 Then
  MsgBox "1枚に収まります。", vbInformation
 End If
End Sub

添付画像で、マクロを掛けるす少しずつ下に降りていきます。
「ExcelVBA 改ページの横破線を消す」の回答画像4
    • good
    • 0
この回答へのお礼

ご指摘大変参考になります。が、私の方で自分で作成した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%になってしまいます。

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

よろしくお願いします。

お礼日時:2016/11/06 10:20

#1の方に反応していませんから、ちょっと私の方にも返事が付くか分かりませんが、その破線というのは、そもそも改ページプレビューのようです。



改ページというものには、2種類あります。
1.自動改ページ
2.手動改ページ

それで、破線が物理的な位置や範囲問題で入る、1.の場合は、そのままではお手上げなのです。VBAで可能ではあっても、そこまで、回答者側が、上げ膳据え膳のようにお世話することはありません。印刷はトライアンドエラーが必要です。

>この一覧は、事前にA4の紙四枚に印刷出来るように印刷範囲、改ページの設定をしてあります
だから、その最後の位置が足らないということでは?

>その破線が、どの行のbOTTOM部分に位置しているか判断する方法がわかりませんので、vbaでその破線をスクロールするのは難しそうですし、消す方法もわかりま

どの行に入るかぐらいは、VBAでは出ます。その位置も移動できます。

しかし、そういうことではなくて、物理的に改ページを入れなくて、一枚に、その印刷範囲が入るかどうかの前提がなくては、途中でかからないようにすることはできないのです。

やたらに、その改ページの破線が入るわけではありません。物理的な領域が足らないからです。主に、上のマージンが、デフォルトのままであるとか、そうするとうまく行かないのです。(上と左のマージンで、他のマージンは決まってくるので、とりあえず、上部のマージンを調整します。)

手動改ページをVBAで適当な所には入れられるのです。それには、そこに印刷できるという前提があってのことです。また、A41枚に入れる問題には、手動改ページは直接関係がありません。

だから、直接VBAの問題ではありません。

私の話は分かっていただけますでしょうか?
    • good
    • 0
この回答へのお礼

ページレイアウトを見てみると、99%の拡大率で、上1.9, ヘッダー1.3, 右2.2, 左2.5, 下2, フッター1.3となります。
四隅のゆとりも十分にあります。
これが横に四列に並んでいるのが、別ブックにコピーした時に、破線の改ページプレビューが入る原因でしょうか?
おっしゃる意味は、恐らく、前提として、A4サイズにきちんと入るサイズで設計していなければ、別ブックにコピーした時にずれてしまい、そこまでは、どうしようもありませんと言うように聞こえます。

今のところ
以下のようなソースで、移動させて消すことは出来ました。
■例開始
Dim Sh2 As Worksheet
Dim Pbrk As HPageBreak
Set Sh2 = ActiveSheet

For Each Pbrk In Sh2.HPageBreaks
If Pbrk.Location.Row < 55 Then

Pbrk.DragOff Direction:=xlDown, RegionIndex:=1

End If

Next Pbrk
■例終了

これか、もしくは、最初にアドバイスを下さった方のやり方にするか、考えています。

ご説明の内容は、今ひとつピントきませんが。私の理解の仕方でよろしかったでしょうか?

お礼日時:2016/10/09 15:53

こんにちは



改ページの位置があらかじめ分かっているのであれば、以下を利用して再設定すればよさそうに思います。
https://msdn.microsoft.com/ja-jp/library/office/ …
    • good
    • 0
この回答へのお礼

Pagebreak = xlnoneをセットしても、反応しませんでした。(10/9)

お礼日時:2016/10/09 15:56

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

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


このQ&Aを見た人がよく見るQ&A