宝珠工房―die Juwelen―

プログラマってのは仕事中に、ちょっと不便な点があればコードを書きます。プライベートでもPCをいじっていると小さなコードを書くことはよくあります。言語はWSH/JavaScript、Excelマクロ、Perl、他さまざまです。

このうち、仕事で作っている商品と直接関係のないコードを公開しているのがこのサイトです。LGPL 準拠にしてありますので、煮るなり焼くなり自由に使ってください。

Excelファイルのファイル名に日付

私の仕事の大半はExcelシートを書くことです。そこで、いつ作ったものかすぐ分かるように、Excelブックのファイル名に、「20120113-宝珠の処置.xls」のように日付をつけて管理しています。

ところが困るのは、2日以上にまたがる仕事の場合。初日には当然その日の日付で保存しますが、上司に提出するときには提出日の日付をつけて提出する必要があります。

そこで考えて、はっきり見える場所に次のような数式を仕込んでおくことにしました。もちろん提出時には消します。

=IF(ISERROR(SEARCH(TEXT(TODAY(),"yyyymmdd"),CELL("filename",$A$1))),"ファイル名の日付が本日ではありません。","日付OK;提出時まで消さないこと。")

CELL("filename",$A$1) はフルパスでファイル名を返します。JavaScriptのlastIndexOfのような便利なものはExcelにはないので、手抜きをして、日付の8桁の数字が入っていればよしとしています。

また、SEARCH()はキーワードが見つからなかったときには0や-1ではなく#VALUE!を返すので、IF()の第一引数ではISERROR()を使う必要があることにも注意が必要です。

どうでしょう。こういう一捻りの積み重ねが、日本のGNHを少しずつ押し上げるんですよね。(GNHの意味が分からなければぐぐってください。)

Excel 2010で困ったこと…セルの色

Excel 2003から2010に乗り換えました。カラーパレットの内容が大きく変わってしまって困っています。扱うデータは2003互換形式のものが大半なので、不用意に色をつけた状態で保存すると、警告が出るのです。

で、.xlsx形式で回ってきたデータを2003形式のブックにインポートした際に使ったスクリプトがこれ。

Sub 色変更()
    Dim r As Range
    For Each r In Range("B9:D62")
        If r.Interior.Color <> &HFFFFFF Then
            r.Interior.ColorIndex = 15
        End If
    Next
End Sub

グレーでマーキングしたセルがぴったりとは旧バージョンの「25%グレー」になっていなかったので、上記のスクリプトで処理してしまいました。

MS ゴシックで한글を表示する

仕事が一段落ついたので、仕事用PCの Windows XP を SP2 にアップグレードしました。そうすると、いままでフォントをMS ゴシックに指定するとハングルも表示されていたのですが、出なくなってしまいました。

同じ現象は既に家のマシン(こちらは Windows XP Home の最初から SP2)でもハングルは出なくて、そのときは「Pro と Home の違いだろう」と思っていたのですが、そうでもないようです。SP2で生じたダウングレードか、もしくは会社の PC には Office 2003 が入っているので、Office が設定したものを SP2 が消してしまったのか…

というわけで、Font Linking の設定です。レジストリの Font Linking の一覧表に「MS Gothic」という項目はありませんでしたので、作ります。内容は MS UIGothic のものからコピー。

私の設定例を公開しています。自分のマシンのものを間違って上書きしないように注意してください。適用する前に内容を読みたければ、キー名を変えてレジストリに投入してみるといいでしょう。

スタートボタンからコマンド一発

ソフトウェアをインストールすると、大抵の場合、[スタート]→[ファイル名を指定して実行(R)] でその実行ファイル名を入力しても起動できるようになります。ところが、その実行ファイルのパスは環境変数 path には設定されていないことが大半です。

たとえば、「iexplore」と入力すると Internet Explorer が起動しますが、iexplore.exe の所在地である x:¥Program Files¥Internet Explorer は path には登録されていません。

いったいこれは、どういう仕掛けで動いているのでしょうか?

実は、レジストリの所定の場所に登録されているのです。

 

そこで今回ご紹介するのが、レジストリにファイル名を登録するためのスクリプトです。cmd.exe の起動時の環境初期化スクリプトにも doskey コマンドの形で(GUIなツールなら毎回 start コマンドを使ってもいいんですが…)コピペできるよう、出力結果を Message Box に出すようにしてあります。

印刷の話をひとつ

文中に使うフォント

みなさんはExcelで文書を作成するとき、どんなフォントをお使いでしょうか。大抵の方は、デフォルトのMS Pゴシックを使っていると思います。

では太字にするときは? 何も考えないでMS Pゴシックの太字にしていないでしょうか。

でも待ってください。実は、MS Pゴシックの太字は、画面上の小さなサイズではノーマルフォントの2倍の太さで表示されますが、ピクセル数が増えると、つまり印刷に回すと、あまり太くならないのです。欧文フォントは最初から Regular Style  Bold Style とを別々にデザインしてありますから、単純に太字指定をかけて印刷しても綺麗に出るのですが、和文フォントの場合、ノーマルフォントを機械的に太くするだけなので、職人さんが別途太くしたフォントと違って、あまり違いが分かりません。

png 670×745 ピクセル
そこで、太字を使いたいときには、あらかじめ太字でない部分の本文フォントをMS 明朝に指定しておきましょう。MS 明朝の本文と、MS ゴシックの太字の組み合わせが綺麗に見えます。

(単にMS ゴシックに変えるだけでは、特にレーザープリンタの場合、プリンタ内蔵のゴシック体がそれほど太くないかもしれないのでダメです。太字指定も忘れずに。)

Wordでも事情は同様で、「(日)MS ゴシック、(英)Arial、太字」というスタイルをあらかじめ登録しておくといいでしょう。

赤は使用禁止

Excelで色を変えて一部分を強調したいとき、皆さんなら何色を使うでしょうか。大抵の人は赤を第一選択にすると思います。

でも、赤は白黒印刷で綺麗に出ません。1枚だけならともかく、何十枚、何百枚と印刷する前提の文章の場合、コピーするたびごとに薄くなっていく赤色は避けるべきです。

おすすめは、青+太字+下線、の組み合わせです。太字にするときは、前述のとおり、太字用にデザインされたフォントを使いましょう。本文がMS 明朝ならMS ゴシックの太字が適任ですが、大量印刷の場合は明朝体は横の細い線が着えやすく、ゆえに本文に丸ゴシックなどを使っている場合があります。こういう場合は同じファミリーのエクストラボールドなどを使ってみましょう。

ファイルに指定されているアイコンを知る方法

Explorerでファイル一覧を見ていて、ある拡張子のファイルのアイコンを知りたい場合ってありますよね。

このスクリプトは、ファイルをD&Dするとそのファイルタイプに対応するアイコンを表示してくれるものです。Windows XP で各フォルダのアイコンを変えたい場合に重宝します。

今日はExcelの小技をいくつか

日付連番から曜日を計算する

=IF(B4>0,"("&CHOOSE(MOD(B4,7)+1,"土","日","月","火","水","木","金")&")","")

B4は日付連番の入っているセルです。

もちろん、セルの書式を「aaa」にするとか、TEXT(B4,"aaa") とかでもいいんですけど、これはOSの言語に依存しますので…。

通算労働時間の計算

="勤務時間 "&TEXT(SUM(D66:D84),"[h]:mm")&"×@850=¥"&TEXT(SUM(D66:D84)*850*24,"#,###")&" 4/25振込予定"

D66:D84は毎日の勤務時間を記録したセル。"[h]:mm" という指定がミソです。また、時刻連番は24時間を1として表現するので、合計値×時給に24を掛けます。

名刺裏面用 交通案内

目的地の近くまで来たのに道に迷った、あるいはそれ以前に、電車が止まってしまって動けない、そういうときに役に立つサイトを名刺サイズに盛り込んであります。

Verkehr

ダウンロードはこちら

盛り込んだサイトは、電話番号から目的地周辺の地図を表示するサイトとしては「Yahoo!電話帳」(PC携帯)と「インターネットタウンページ」を、口コミでリアルタイム情報が得られるサイトとしては「2ch交通情報板」と「ジョルダンライブ」を併記。c.2ch.netではなくi2ch.netを利用しているのは、c.2chだとアダルト広告が入ってしまい、特に未成年者に渡すには不都合な場合があるからです。

漢方辞書を最新MS IMEに対応させる

Vectorに登録されている「漢方辞書」。漢方薬の名前を頻繁に入力する場合には非常に重宝するのですが、残念なことに、そのままでは最新のMS IMEには対応していません。開発元のNifty「漢方フォーラム」は2007年3月に完全閉鎖されてしまったとのことなので、今後のバージョンアップは期待できません。

というわけで、これを使う際には、正規表現に対応したテキストエディタ等で、MS IMEが受け付けるデータ形式に書き換えてやらないといけません。

そこで、そういうテキストエディタに慣れていない人のために、「変換キット」をご用意しました。

使い方は至ってシンプルで、ダウンロードして解凍し、バッチファイルをダブルクリックで実行するだけ。どうぞご利用ください。

【詳しい使い方】

・まず、漢方辞書本体(kampo300.lzh)をどこかに解凍します。下図はデスクトップの下にkampo300というフォルダを作って、そこに解凍した場合です。

1 kampodic extracted

つづいて、拙作変換キットを同じ場所に解凍します。do.bat(拡張子を隠す設定の場合だと、単にdoと表示されます)とbinフォルダが漢方辞書のファイルと同じ位置に置かれていればOKです。

2 henkankit extracted

ここで、do.batをダブルクリックして実行します。「なんとか-ATOK.txt」というファイル(これも拡張子を隠す設定の場合は「なんとか-ATOK」とだけ表示されます)がいくつかできていれば成功です。データはATOK12の形式になっていますが、そのままでMS IMEは受け付けてくれます。
3 do

【重要な注意】
拙作ツールの不具合等はこの記事へのコメントか、椅子人あてのメールでお願いします。ただし、辞書データ自体の再利用については、原編集者の多紀元一さんにお願いします。(多紀さんのメールアドレスは、kampo300.lzh内のREADME.DOCを参照。@niftyserve.or.jpを@nifty.comに変更すれば今でも通ります。)

Windows Vista で MS-DOS アプリを日本語モードで起動する

Windows Vista では MS-DOS アプリケーションでの日本語のサポートがかなり削られています。日本語(CJK?)環境固有の機能がことごとく削られたというのみならず、なんと、MS-DOS アプリを起動した時点で強制的に英語モード(コードページ437)に落ちてしまうのです。

そこでどうにかならないかといろいろ試行錯誤してみたところ、コマンドプロンプト(cmd.exe)を起動して、その中から「command.com /c DOSアプリのファイル名 引数....」というコマンドを実行すれば英語モードに落ちないことが分かりました。

というわけで、いちいちコマンドを入力せずにダブルクリック一発で起動するには、「cmd.exe /c command.com /c DOSアプリのファイル名 引数....」というコマンドへのショートカットを作っておくとうまくいきます。最初の「cmd.exe /c」がミソで、これがないと、ショートカットの拡張子が通常の Windows アプリの場合の .lnk ではなく .pif になってしまい、英語モードで起動してしまいます。

ショートカットを作成する作業は手間がかかりますし、単にフリーソフトなどをダウンロードしてきて使うという人には負担が大きいでしょうから、DOS アプリの .exe ファイルを drag & drop するだけで自動的に上記のようなショートカットを作成してくれるスクリプトを用意しました。GNU Lesser GPL 準拠としますので、いまだに MS-DOS アプリの開発・サポートを続けておられる皆様は、ご自身のアプリにご自由に組み込んでお使いください。

P.S.
使っていただいた方は、この記事へのツッコミという形で足跡を残していただけるとうれしいです。

livedoor プロフィール
タグクラウド
QRコード
QRコード
  • ライブドアブログ