シーゴの Excel 研究室

タイトル変更しました (旧称:今日を乗り切るExcel研究所)

シフトJISのテキストファイルをUTF-8に変換するバッチ

今回の記事では、テキストファイルのエンコーディングを、シフト JIS から BOM あり/なしの UTF-8 に変換するバッチプログラムを紹介します。

内容が Excel から少し離れますが、次の記事で CSV ファイルの文字化け問題を取り上げる予定で、それに関連して Windows でのテキストエンコーディングの話題を本記事として切り離し、先行公開するものです。

【本記事のバッチは非推奨です】
改善された最新版の UTF-8 変換バッチを公開しました。
本記事のバッチは非推奨とさせていただきます。
本記事の一部バッチにあった不具合を解消したうえ、信頼性、使い勝手もよくなっていますので、今後はこちらのご利用をよろしくお願いいたします。 www.shegolab.jp  

【更新 2018/05/12】 バッチプログラムを一部修正しました。Windows 10 の UTF-8 サポートへの対応です。(追記参照)

Windows のテキストエンコーディング事情

そもそもなぜ Windows でよく文字化けするのでしょうか。

ちゃんと説明すると長くなるのですが、一言でいえばそれは Windows が、ヘンクツだからです。
もう少し詳しく説明すると Windows を作った世界的企業である某社の中の人たちが、ヘンクツだからです。

現在、インターネットやコンピュータで主流となっているテキストファイルのエンコーディング方式は、国際標準規格の「UTF-8」と呼ばれているものです。
これにより、テキストファイルは国や言語、システムの種類によらずに交換できるようになっています。

しかしヘンクツな Windows 環境では、旧来の「シフトJIS(Shift_JIS)」という日本語専用の方式をかたくなに使い続けており、世界標準の UTF-8 のファイルを開いても文字化けして読めないのです。

もちろん、国際的 OS である Windows さんのほうでもだいぶ前から UTF-8 に対応してはいるのですが、これまたヘンクツなことに、それは「BOM 付き UTF-8」という、非常に不可解な方式で、言わば「オレオレ UTF-8 」とでも呼べるものなのです。
このオレオレ UTF-8 のファイルは、他システムとのやり取りするとなると、かえって不具合を起こす原因となるという困りものです。

続きを読む

Excel の画像をファイルに保存したい

今回は、シートに貼り付けた画像をファイルに保存する方法について調べます。
また、それを自動化するマクロを作成します。

f:id:shego:20171203232642p:plain

貼り付け画像をファイルに保存できない

Excelシートには画像も貼り付けられるので、スクラップブック的な使い方もあります。

パソコン関連のブログなど書いていると、ウィンドウ画面のキャプチャ画像を沢山取るわけですが、それらを Excel シートに貼ってまとめておいたりします。 Excel には正にそのための「スナップショット」というおベンリ機能があって重宝します。

しかし、せっかく集めたのキャプチャを画像ファイルとして書き出す機能がありません。 仕方ないので、いったん「ペイント」にコピー&ペーストして画像ファイルに保存するのですが、これがまた使えないソフトです。

ペイントはウィンドウを一つしか開けないので、画像の余白をギリギリまでトリミングしなおしたり、ファイル名変更前に Ctrl+S して前の画像を上書き保存してしまったりで、「余計な仕事をやらされている感」が募ります。

Word や PowerPoint なら「図として保存」で画像をファイルに保存できるのに、Excel にそれが無いのは一体何の嫌がらせでしょうか。

続きを読む

Excel セルの日付を文字列に変換したい

日付をそのままの文字列に変換する手順を検討し、それを自動化するそのマクロを作成します。

f:id:shego:20171123223825p:plain

日付が数値になってしまう

Excel が扱う日付データの実体は、単なる数値です。

セルに日付っぽいテキストを入力すると、日付データとして扱ってくれますが、このときセルの値としては勝手に数値(シリアル値)に変換されます。

それが日付に見えているのはセルの書式設定でやっていることです。 セルの表示形式に日付の書式が設定されていると、数値を基準日からの経過日数とみなして年月日や時分秒に換算し、日付形式で表示されるようになっています。

何かしてそれが外れたときに、元の数値が裸で現れることになります。

日付を見た目そのままの日付テキストとして扱いたい時には、それをなんとかして文字列データに変換しなければなりません。

続きを読む

同じ値のセルを結合したい

同じ値が連続しているセル範囲の結合と解除をする方法を検討します。また、それを一括で行うマクロを作成します。

セル結合の誘惑

シートに、同じ値が連続しているセル領域があります。

ここではそのようなセル領域を「連続セル」と呼ぶことにします。

人にはどうも、連続セルを一つのセルに結合したくなる強い習性があるようです。

確かに、表形式の列などで、冗長な連続セルを一つに結合すれば、体裁として構成が分かり易くなります。

一方、セルを結合されてしまうと、並べ替えや CSV 出力など、データとしてシートを使いたい時に困ることになるといった弊害があることも、今ではよく知られているところです。

見た目はきれいでも、それがために強いられる余分で非効率な作業にはイライラが募ります。

イライラの原因は、連続セルの結合と解除を一括でやる効率的な方法が無いからで、使う方だけでなく、作る方でも相当なイライラとなっています。

逆に言えば、この手間さえ軽減できれば、結合セルもそんなに悪いものではありません。

問題は、連続セルの結合そのものが悪いのではなく、それを一括で手軽に行う手段が Excel の機能として提供されないことにあります。

続きを読む

Excel表で内側の罫線のみを引きたい

表の罫線を引くときに、内側罫線のみ線種を指定してを引く方法と、それを自動化するマクロを検討します。

罫線のボタンが足りない件

Excel のリボンに罫線を引くボタンがありますが、パターンがいろいろ足りないと感じることはありませんか。

特に、表の内部(内側)罫線だけを引いたり消したりするパターンがありません。

格子の内側の罫線だけを消したい時に、「線なし」を選ぶと、外枠の罫線まで消されてしまいます。

表内部のタテ線とヨコ線で線種と変えたい場合、タテだけ/ヨコだけを別々に設定するボタンもありません

Ctrl+1で「セルの書式設定」>「罫線」タブを開けば、内側罫線を編集する事は出来るのですが、操作が細かくて面倒です。

簡単に内側だけ罫線を引く方法なないのでしょうか。

続きを読む