• 締切済み

VBにて指定した通りにExcelの列幅が設定されません..

こんにちは。 VBにて指定した通りにExcelの列幅が設定されず、困っております。 【現象】 VisualBasicから、Excelを起動し新規ブックを生成し、 ワークシートを指定して全列幅を「1.75ポイント」で 設定したいのですが、どうしても 列幅が「1.83ポイント」で設定されてしまいます。 VB側ソースでは、次のように書いております。 ワークシート(Index).Cells.ColumnWidth = 1.75 VB側で指定した列幅がExcel側で不都合というケースはあるのでしょうか..。 VB側で列幅を指定したにも拘らず、 Excel側で勝手に列幅を調整してしまう事はあるのでしょうか..? 【実行環境】 ・Visual Basic 6.0 ・Excel Ver2002 かなり急いでおります。 お忙しい中、恐縮ではございますが、 何かご存知の方、アドバイス等、頂戴できますと幸いです。  

みんなの回答

  • yamav102
  • ベストアンサー率100% (3/3)
回答No.5

こちら参考にはなるかと。 「ColumnWidth は設定どおり設定されるわけではない件」 http://yamav102.cocolog-nifty.com/blog/2012/07/columnwidth-9c8.html

参考URL:
http://yamav102.cocolog-nifty.com/blog/2012/07/columnwidth-9c8.html
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんにちは。Wendy02です。 >現行仕様が、列幅を指定して改頁位置を決めているのです。 >その為、列幅が既存と同じく「1.75」になりませんと改頁位置がずれ、見た目が大きく変わってしまいます。 (自動)改ページの位置は、行数に対してであって、列幅とは、直接関係ないはずです。 分かりきっている話だとは思いますが、自動改ページ位置は、物理的行数の限界があるものの、上下のマージン+ヘッダー・フッターで、決定されます。印刷幅に関しては、マージンで処理します。右側は論理位置で、左側が物理位置です。 だから、自動改ページ位置のズレは、左のマージンであわせるというのが一般的です。左マージンを狭くするしかありません。(手動改ページについては、ここでは触れていません。) 右は、ある程度しかできません。位置が狂うのは、おそらくギリギリの限界にあわせているのだろうと思います。ある程度の余裕をみていないと、ちょっとしたことで、位置が狂ってしまうわけです。 それから、現在、Excelと、プリンタへの印刷できるようになっているプリンタへの出力なら可能なのですが、手元にないものですと、経験的にかなり難しいです。もし、そうなら、VB側から、試し刷りさせて、設定を調整させるようにしないと、無理かもしれませんね。 それと、今まで、私の試した結果ですと、フォント・サイズが、10~12ですと、だいたいデフォルト幅の設定に収まりますが、それ以外ですとズレるようです。(高さは別です。だから、必ずしも、規定の改行位置には収まらないこともあります。) ただし、私が試しているのは、MS ゴシックです。プロポーショナルでは試したことはありません。

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.3

こんにちは。KenKen_SP です。 原因は他の方が回答されているので、提案です。 あなたが環境設定した Excel ファイルをテンプレートとして、Exe と同一 のフォルダまたはサブフォルダ等に用意し、出力時にはそのファイルをコピー して開き、データを書き込みます。 この仕様であれば、列幅等々や罫線、フォントなどの環境設定を VB 側から 行う必要はありません。VB ではデータを流し込みことしかしません。あるいは 最小限で済ませます。 予めセル幅 1.75 に設定したものを開くので、異なる PC 環境の影響を受け 難いと思いますが...どうでしょう? VB 側のコード量も減らせます。結果、時間がかかる環境設定等の処理を省略 できる分、Exe の出力処理の実行速度向上も期待できるかも?

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 確認しました。 それは、Excelのスタイルで指定しているデフォルト・フォントのサイズとのバランスの問題だから、1.83pt が、1.75pt に設定させるというのは、出来る場合と、そうでない場合があります。デフォルト・フォントのサイズを換えれば、できるようになるはずです。 こちらが試したものでは、デフォルト・フォントのサイズが9 にして試すと、1.83(16 pixel)  に丸められます。 実際、ピクセルに対するポイントであって、ピクセル単位にしか、列幅は動かないはずです。だから、その設定が出来ない場合は、そのフォントのサイズに関しては、列幅のポイントは、それ以上は出来ません。また、それでExcelに実質的な不都合はないはずですし、ワークシートのセルのサイズは、あまり厳密なものがありません。

maryanne39
質問者

補足

ご丁寧なご回答を有難うございます。 補足させていただきますと、 既存の「VBからExcel出力する」システムへ手を加えています。 現行仕様が、列幅を指定して改頁位置を決めているのです。 (一部の列は更に別の幅で指定し直して調整しています。) その為、列幅が既存と同じく「1.75」になりませんと 改頁位置がずれ、見た目が大きく変わってしまいます。 そうなると、基本設計(概要設計)から見直す必要も出かねず、 どうしたものか..。 不思議なのは、 現行システムでの実行結果(列幅1.75)よりも デバッグ結果(列幅1.83)のほうが横幅が狭く見えるんです。  

回答No.1

再現できません。とりあえずメモだけ。 http://support.microsoft.com/kb/214123 http://hp.vector.co.jp/authors/VA016119/sizemmqa.html#columnwidth http://msdn2.microsoft.com/ja-jp/library/microsoft.office.interop.excel.range.columnwidth(VS.80).aspx ColumnWidthは標準フォントでの【文字数】。プロポーショナルフォントの場合「0」という文字の横幅が1文字の基準。 http://msdn2.microsoft.com/ja-jp/library/microsoft.office.interop.excel.range.width(VS.80).aspx Widthはポイント数を知ることが出来るが、ReadOnlyなので値を代入できない。 >ピクセル単位に丸められるようです。1 ピクセルよりも細かく微調整することができません。 正確には8ピクセル単位。

maryanne39
質問者

お礼

ご回答いただき、有難うございます。 単位について、ポイントではなく「ピクセル」でした. . 。 大変失礼致しました。 貼り付けて下さったサイトはとても参考になりました。 お礼を申し上げます。

maryanne39
質問者

補足

度々すみません。。 「ピクセル」ではありません。 訂正をさせていただけますでしょうか。

関連するQ&A