次の方法で共有

複数のWindows環境によりマクロで作成したEXCELファイルの改ページが異なる

Anonymous
2018-01-29T04:42:45+00:00

皆さん

いつもお世話になっております。

ただ今、EXCELマクロプログラムの検証を行っていて以下の問題が発生していますので

ご存知の方、ご教授ください。

マクロの内容:マクロ(EXCEL)プログラムはフォーマットファイル(EXCEL)を用いて、CSVデータを読み込んで結果のEXCELファイルを作成するプログラムです。

検証内容:Windows7とWindows10で正常に動いているかを確認します。

問題は以下となります

①現行環境:Windowss7でページ単位の行数が48行で出力されています。

②新規環境:Windows10でページ単位の行数が57行で出力されています。

マクロプログラムを確認すると、以下のページ単位の行数の取得するコードが書いてあります。

 [.HPageBreaks(1).Location.Row - 1]

現行環境と新規環境にINPUT情報(データCSVファイル、フォーマットファイル、マクロが含まれているEXCELファイル)が同じであって

プリンタドライブ、プリンタ詳細設定とWindowsのディスプレイの設定も同じように設定してみましたが、

結果も変わっていません。

↓↓↓↓↓↓

聞きたいことは:[.HPageBreaks(1).Location.Row - 1]の確認の仕方がなんですか。

普通EXCELを開いて確認できますか。HPageBreaks(1).Locationの設定の仕方が分かりましたが、

環境により.HPageBreaks(1).Location.Rowが異なっているので現在対応し方(どんな環境でも結果が同じ)がまだ見つかっていないです。

参照ソースコードは以下となります。

-------------------------------------ーーー

'すべての改ページポイントのクリア

.ResetAllPageBreaks

With .PageSetup

.Zoom = False

.FitToPagesWide = 1

.FitToPagesTall = False

End With

'-- 横幅にあわせて印刷範囲を一旦広く取り、実行環境での1ページ行数を取得する

.PageSetup.PrintArea = "$A$1:$" & sRayoutColumns & Trim(Str(1000))

.Application.ActiveWindow.SmallScroll Down:=1000

'-- 1ページに表示可能な最大行数を取得する

iPageRows = .HPageBreaks(1).Location.Row - 1

-------------------------------------ーーー

よろしくお願い致します。

**モデレーター注**

この質問は Windows / Windows 10 / Windows 設定 のカテゴリに投稿されましたが、内容から判断しこちらのカテゴリに移動いたしました。

適切なカテゴリに投稿すると、返信や回答が得られやすくなり、同じ質問を持つ他のユーザーの参考にもなります。

開発者テクノロジ | Visual Basic for Applications

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

3 件の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2018-01-30T01:34:41+00:00

    原因は以下となります。

    ①帳票レイアウトが無効であること

     帳票レイアウト定義シート(フォーマットファイル)から帳票出力用シートを作成するとき、

     帳票出力用シートの列の横幅が帳票レイアウト定義シートの列の幅と異なっているため、

     横幅に合わせる帳票に対して1ページあたり表示行数が自動的に計算されます(.HPageBreaks(1).Location.Row - 1)。

    ②環境により新規ワークブックの列の幅が異なっていること

     また、Windows7とWindows10で帳票の作成のためにワークブックを新規作成するとき、

     列の幅が異なっているため、環境によりページの表示範囲の横幅も異なっています。

     したがって全体的にみると、横幅に合わせる帳票に対して1ページあたり表示行数が自動的に計算されます。

    ⇒勉強になったこと

     マクロでフォーマットを用いて新規レポートを作成するとき、新規レポートの列の幅をEXCELに任せないで

     フォーマットの列の幅で固定的に設定すれば、ページの列の幅とページあたりの表示行数が複数の環境でも統一されます。

    この回答は役に立ちましたか?

    2 人がこの回答が役に立ったと思いました。
    0 件のコメント コメントはありません
  2. Anonymous
    2018-01-29T05:09:06+00:00

    同じA4横の用紙設定でも、デフォルトプリンタの可能印字範囲の差によって1ページに印字可能な面積が変わってきますので、改ページ位置が変わることがあります。プリンタの仕様的な制限による余白の幅の差によって変わってくるのです。統一したければ、組織内にあるどのプリンタでも設定可能な範囲に余白の幅を設定しておくことです。ぎりぎりまで印字しようとするとプリンタの機種の差で印字出来ずに改ページ位置が変わってしまうのはしかたないことです。

    ご返事、ありがとうございます。

    補足いたします。現行と新規環境に対して同じプリンタのドライブをインストールしてからデフォルトプリンタとして設定した前提です。またどちらでもOffice2013が入っています。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  3. Anonymous
    2018-01-29T04:54:37+00:00

    同じA4横の用紙設定でも、デフォルトプリンタの可能印字範囲の差によって1ページに印字可能な面積が変わってきますので、改ページ位置が変わることがあります。プリンタの仕様的な制限による余白の幅の差によって変わってくるのです。統一したければ、組織内にあるどのプリンタでも設定可能な範囲に余白の幅を設定しておくことです。ぎりぎりまで印字しようとするとプリンタの機種の差で印字出来ずに改ページ位置が変わってしまうのはしかたないことです。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません