ボンジュール・マドモアゼル

本サイトの情報は自己責任にてご利用下さい。

[Microsoft Excel] Excel フォームのチェックボックス、オプションボタンのフォント、サイズ変更、指定

 
いろいろ調べたところ、フォームツールバーから追加されるチェックボックス、
オプションボタンについては、普通のやり方では、
フォントやフォントサイズを変更できないようだ。

探してみたら、裏技を使ってフォント、フォントサイズを変更する方法が見つかった。

Changing properties of Form controls
http://www.jkp-ads.com/articles/Excel2007FileFormat01.asp

このサイトでは、Excel 2007 によって ExcelファイルをXML形式で保存し、
その XML を直接、編集することでフォントを変更する方法が説明されている。
※ XML出力自体はExcel2003でサポートされているらしい。

Excel2000 では、以下の方法が使える(試行錯誤の末に発見)。
ただし、この方法では、既存のコントロールのフォントを変更するのではなく、新規に追加するコントロールに適用されるフォントを、予めレジストリに設定することになる。

手順は下記のとおり。
実施前には必ずレジストリをバックアップすること。(XPは簡単)
参考:
  文書番号:322756
  Windows XP でレジストリをバックアップおよび復元する方法
  http://support.microsoft.com/kb/322756/ja

以下、自己責任でお願いします。

(1) レジストリエディタを開き、次のパスを開く。

HKEY_CURRENT_USER\Software\Microsoft\Office\9.0\Excel\Options

(2) 文字列値を追加する。
  名前: DlgFont
  値: Arial Black, 8

"フォント名, サイズ"という要領で指定。

(3) Excel にて、チェックボックスを追加し、Excel ファイルを保存する。

(4) (2)で追加した文字列値を削除する。

参考になったのは、以下の情報。
文書番号:405456
[XL95]ダイアログ ボックス内のフォントを変更する方法
http://support.microsoft.com/kb/405456/ja

[Microsoft Excel] Excel ハイパーリンク PDFのページ指定

 
ExcelやWordでハイパーリンクを作成するとき、Web 上にあるPDFファイルに対してページを指定したいのであれば、アドレスを http://foo/hoge.pdf#page=10 のように指定すればよい。

問題なのは、Web上のPDFではなく、ファイルシステム上のPDFに対してハイパーリンクする方法だ。これらのハイパーリンクは、リンク先の URLhttp:// ではなく file:// で始まるものである。操作的には、ファイルオープンダイアログによってファイルを指定することで作成される。ファイルに対するこのようなハイパーリンクは #page=n を付加することができない。(Excel 2000で確認)

そこで、ファイルに対して直接リンクすることはあきらめ、
間接的に PDF ファイルの指定のページを開くことを考える。

方法1 ハイパーリンクしたバッチファイルからPDFを開く。

この方法は次の情報を参考にした。
コマンドラインからスクリプトとDDEを使ってPDFファイルをページ指定で開く。

次のようなバッチファイルを作成し、このバッチファイルに対してハイパーリンクを作成する。このコマンドは、c:\tmp\hoge.pdf でPDFファイルのパスを、"page=4" でページを指定している。

openpdf.bat
start AcroRD32.exe /a "page=4" c:\tmp\hoge.pdf


方法2 HTML ファイルのリダイレクト機能を利用する。
まず、下のような PDFファイルにリダイレクトするHTMLを作る。

redirect.htm
<html>
  <head>
    <meta http-equiv="refresh" content="0;url=file:///c:/tmp/sample.pdf#page=10">
  </head>
  <body></body>
</html>


次に Excel や Word から、この HTML に対してリンクを貼る。

ただし、こちらのやり方では最終的にページ遷移されるか否かは、
クライアントの Adobe Reader の設定で決まる。

Adobe Reader 9 の場合、「PDFをブラウザに表示」の設定が
有効でない場合、#page=10 が働かない。

この「PDFをブラウザに表示」は、Adobe Reader のメニューから
編集(F) → 環境設定(N) を開き、分類でインターネットを選択すると設定を変更できる。

Adobe Reader 9 - 環境設定 - PDFをブラウザに表示

[Microsoft Excel] フリーフォーム AddNodes エラー回避策

 

Excel 2000 で、オートシェイプの曲線(フリーフォーム)をVBA で作成する際、
曲線上の隣り合う頂点が近すぎる場合に次のようなエラーが発生する。

実行時エラー'1004':
アプリケーション定義またはオブジェクト定義のエラーです。

この不具合については、Excel2000におけるフリーフォーム描画の不具合 が参考になる。

回避策は、一度、十分に間隔の空けた頂点で曲線を描き、
その後、本来の座標値を再設定することである。
思った形にならないときは、座標値の再設定や、
頂点の自動設定を何度か繰り返すことである。

例)
エラーの発生するコード
With ActiveSheet.Shapes.BuildFreeform(msoEditingAuto, 20#, 15#)
    .AddNodes msoSegmentCurve, msoEditingAuto, 17.5, 19.33013
    .AddNodes msoSegmentCurve, msoEditingAuto, 12.5, 19.33013
    .AddNodes msoSegmentCurve, msoEditingAuto, 10#, 15#
    .AddNodes msoSegmentCurve, msoEditingAuto, 12.5, 10.66987
    .AddNodes msoSegmentCurve, msoEditingAuto, 17.5, 10.66987
    .AddNodes msoSegmentCurve, msoEditingAuto, 20#, 15#
    .ConvertToShape
End With


エラーの発生しないコード
'とりあえず,全座標値を3倍してフリーフォームを作成
With ActiveSheet.Shapes.BuildFreeform(msoEditingAuto, 20# * 3#, 15# * 3#)
    .AddNodes msoSegmentCurve, msoEditingAuto, 17.5 * 3#, 19.33013 * 3#
    .AddNodes msoSegmentCurve, msoEditingAuto, 12.5 * 3#, 19.33013 * 3#
    .AddNodes msoSegmentCurve, msoEditingAuto, 10 * 3#, 15 * 3#
    .AddNodes msoSegmentCurve, msoEditingAuto, 12.5 * 3#, 10.66987 * 3#
    .AddNodes msoSegmentCurve, msoEditingAuto, 17.5 * 3#, 10.66987 * 3#
    .AddNodes msoSegmentCurve, msoEditingAuto, 20 * 3#, 15 * 3#
    Dim aShape As Shape
    Set aShape = .ConvertToShape
End With

'本来の座標値に再設定する
With aShape.Nodes
    'Index は 3つ飛び
    .SetPosition 1, 20#, 15#
    .SetPosition 4, 17.5, 19.33013
    .SetPosition 7, 12.5, 19.33013
    .SetPosition 10, 10#, 15#
    .SetPosition 13, 12.5, 10.66987
    .SetPosition 16, 17.5, 10.66987
End With

'全頂点を自動設定にする
Dim i As Long
For i = 1 To aShape.Nodes.Count
    aShape.Nodes.SetEditingType i, msoEditingAuto
Next