[[20090918181447]] 『印刷レイアウトの悩み』(tomato) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『印刷レイアウトの悩み』(tomato)
 ようやく完成したと思ったら社内のPCによっては全く列幅が異なり、
 誰でも簡単に作れるように作ったつもりの写真帳作成マクロが 台無しです。
 ところが何が原因かがわかりません。
 Excelバージョン、OSも異なるものは混在していますが、メーカー以外は全く同じような構成で
 もその現象がでていますので、何をしたらよいのかが見当もつきません。
 ピクセルが関係しているようですが・・・?
 自分のPCは自宅はWindows2000、会社はVistaBusiness sp1で何れもExcel2003 sp3を使用して問題はありません。
 社内のPCも大半は 問題ありません。
 最近Excelの標準フォントを「HG丸ゴシックM-PRO 10pt」に変更したとき標準列幅に違いがあることがわかり、
 マクロだけで列幅を設定する と問題があることはわかっていたので、印刷用標準シートを非表示で装備し、
 その元シートを新しく作成させたシートにコピーすると ともに、
 元シートの列幅、行高さを読み取って新シートを設定させる方式で行けるかと思ったのですが駄目でした。
 本校にもミリ単位で列幅を調整できるマクロは紹介されているようですが、まだその仕組みはわかっていません。
 で、長くなりましたが、教えていただきたいのは、
 使われるPCによってそのピクセルだかの違いを見分けて設定を変えるようなことはできないのでしょうか。
 ちなみに作成したプロシージャは部分的ですが以下のようなものです。

 ======

 '@Formによって異なる基本情報を読み込む。
    Call getPageItems(FormName)
    p = getPageN(v(2) * v(3))'1頁に貼りつける写真枚数で全ページ数を決定する。
    rs = v(7) '1頁の行数
    cs = v(3) * v(5) '1頁の列数(1ユニットに使用する列数×横の写真枚数
 With Sheets(FormName).Range(FormName) ’読み込む元シートのレイアウト範囲

 'Aページフォームの行列サイズを格納
    ReDim heightArray(rs)
    ReDim widthArray(cs)
    For n = 1 To rs
        heightArray(n) = .Rows(n).RowHeight
    Next n
    For n = 1 To cs
        widthArray(n) = .Columns(n).ColumnWidth
    Next n
    .Copy
End With

 'B新規sheetを追加して元フォームをペースト
    Worksheets.Add after:=Sheet1
    For rr = 0 To p - 1
        Cells(rr * rs + 1, 1).Select
        Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
            False, Transpose:=False
        Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:= _
            False, Transpose:=False
    Next
    Application.CutCopyMode = False

'C行列サイズ調整

    For rr = 1 To rs * p
        n = (rr - 1) Mod rs
        Rows(rr).RowHeight = heightArray(n + 1)
    Next rr
    For n = 1 To cs
        Columns(n).ColumnWidth = widthArray(n)
    Next n
'Dページ設定
    Call getPageSetupPropaty(ActiveSheet, FormName)
    ActiveWindow.DisplayGridlines = False
    ActiveWindow.View = xlPageBreakPreview
 ======
 といった具合です。
 よろしくお願いします。

 これらの情報は既に検討済みでしょうか? かなり面倒なことのように思われますね・・・・(Hatch)
異なる Windows 環境で Excel 2002 の印刷範囲やセルの幅や高さが変わる場合の対策
http://support.microsoft.com/kb/400271/ja
セルの大きさについての Q&A
http://hp.vector.co.jp/authors/VA016119/sizemmqa.html

(Hatch)さんありがとうございます。
 ようやくレスがあり、見てくれている方があると安心しました。
 ご指摘の設定は方法は見ては入るのですが、
 未熟な私には具体的(真似の可能な)なサンプルがないと対処できず、質問した次第です。
 要するに現在作成済みのレイアウトシートの列幅をミリで格納しておいて、
 他のPCでもミリで再現させるだけのことだと思いますが、「かなり面倒なこと」なのでしょうか?
 いま上原圭一さんの「セル幅ミリ設定ツールver3」で公開されているマクロの解読中ですが・・・。(tomato)

 いろんな環境で使えるようにするということだけで、私には面倒なことになってしまいます。
 私の守備範囲を超えたものというような感じで「かなり面倒なことと」と書いています。
 あくまでも私にとっては面倒と思えることということです。   (Hatch)


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.