写真 エクセルの罫線が消えてしまって焦っている人
さて四連休にもかかわらずコロナウイルス騒動の第二波がやって来ているので不要不急の外出は控えているワテである。
と言う事で、超久しぶりにプログラミング関連の記事を書いてみた。
まあ、元々ワテのブログは「プログラム書こうじゃあ~りませんか!」と言うテーマで開始したのだが、最近では趣味のDIY関連記事が多かったじゃあ~りませんか!
そこで、当記事ではエクセルを使っていると良く経験する罫線が消えてしまう問題を簡単に解決出来る画期的なツール(EXCEL VSTOアドイン)を作ったので紹介したい。
では、本題に入ろう。
VSTOアドインをダウンロードしたい人はここからどうぞ。
一つのZIPファイル RuleLinesRepairVB.zip(約300KB)がダウンロードできます。
ダウンロードしたZIPファイルを解凍してsetup.exeを実行してインストールする前に、必ず必要な設定(セキュリティブロックの解除)があります。詳細は本文中の説明で解説していますので、それを読んでからインストール作業をお願いします。
エクセルでコピペすると罫線が消える
下図では、見易くするためにセルにデータを入れていないが、現実の状況ではセルにデータが入っている。
以下で紹介するワテ自作のツールは、データが入っている場合でも勿論動作する。
さて、下図左に罫線を描画して完成したテーブルがある。
図 エクセルの罫線はコピペすると消える事がある
例えばこの表のセルにデータを書き込みたいのだが、手入力すればもちろん問題無く入力出来る。
でも例えば、別のシートにあるデータをコピペして貼り付けたとすると、上図右のように罫線が消える事がある。
つまりまあ、コピー元のデータには罫線が描かれていなくて、そのデータをコピーして上表に貼り付けると上図のように貼り付けた場所の罫線が無くなるのだ。その場合でも、データ自体は正しく貼り付けられているので、あとは、罫線を手書きで書き直せば解決するが。
でも、その罫線を書き直す作業が煩わしいのだ。
上図くらいの簡単な罫線なら、罫線ツールを使って書き直しても10秒も有れば可能だろう。
でも、太線と細線を使い分けて複雑な罫線を描画している場合には、書き直すのに数分掛かる場合もある。
ワテ自作の罫線修復ツールのデモ動画
下図に動画ファイルを張り付けた。
画面左下の三角ボタン▶をクリック(あるいは画面中央をクリック)すると数秒の短いデモンストレーション動画が再生できる。
動画 ワテ自作の「罫線自動修復ツール」の動作の様子(9秒)
上動画に示すように、罫線が消えてしまった領域を含むように領域をマウスで選択する(1セル以上は広めに選択する)。
その状態で、リボンの「アドイン」と言う名前のタブにあるワテ自作の便利ツール(WarekoTools)にある「罫線の修復」ボタンをクリックするだけで良いのだ。
そうすると、上動画で示したように消え去っていた罫線を完全全自動で再描画するのだ!
どう!?
いい感じで動くでしょ!
複数の罫線領域が消えていても自動復元可能
次に示す動画では、もう少し複雑なケースを紹介したい。
下図右のように表の罫線が消えている領域が二箇所ある。
この場合でも自動罫線再描画が可能だ。
動作の様子は、動画の再生ボタン▶をクリックしてご覧ください。
動画 複数個所の罫線が消えている場合でも自動罫線復元が可能(7秒)
どう!!
完璧でしょ!!
最新のAI技術を組み込んでいるかの如く、気の利いた動きだと思いませんか!
痒い所に手が届くとはこの事か!
↑この孫の手がアマゾンのカスタマーレビュー評価が高い。
↑猫の手か?
EXCEL VSTOアドインの作り方
さて、この「Wareko式エクセル罫線自動修復VSTOアドイン」はEXCEL VSTOアドインで作成してエクセルに組み込んでいる。
EXCEL VSTOアドインの作成方法は他の記事でも詳しく説明しているので、ここでは具体的な開発手順の解説は省略する。
VSTO(Visual Studio Tools for Office)とは、ビジュアルスタジオを使ってOffice用のアドインソフト(機能を強化するソフト)を開発するツールだ。VSTOは以前は有料製品だったが、現在ではVisual Studio 2019に標準で付属している。
ちなみに、今回は開発言語としてVisual Basic(=VB.NET)を選択してみた。いつもならC#を使う事が多いのだが、久しぶりにVB.NETを選択した。
と言うのは、実は今回紹介する罫線自動修復ツールは、数年前にVSTOを勉強していた時にVB.NETで作成していたのだ。
作ったけれど、ワテ自身、エクセル作業を偶にしかやらないので、罫線自動修復ツール自体をそんなには必要としていなかったので、その後、放置していたのだ。
そのVB.NETコードを、今回、Visual Studio 2019のVB.NETに移植したのだ。
しかしまあ、Visual Studio 2019と言う史上最強のソフトウェア統合開発環境が個人利用なら無料で使えるんだから、いい時代になったもんだ。
それにパソコン性能も物凄く高くなったので、ビルドやコンパイルも数秒で完了する。コンパイルに何時間も掛かるなんて事は滅多に無い。
そしてVisual Studio2019の安定性も非常に良いので、原因不明のバグとか異常終了など滅多に無い。
と言うか、Visual Studio2019を使い始めてそんな問題に遭遇した事が無い。
↑は「Visual Studio 2019を使いこなす最良の1冊」らしい(アマゾンの商品説明)
↑たぶんこれがVB.NETの教科書かな?
なお、↓はVisual Studio Codeの解説書だ。
ワテの理解では、Visual Studio CodeとVisual Studioの違いは以下の通り。
マイクロソフト社が何十年も前から販売している史上最強の超高性能統合プログラム開発環境だ。
インストールすれば直ぐに使い始められる。
2015に最初のバージョンが公開されたソースコードエディタだが、各種の拡張機能を読み込む事が出来るので、それらを組み合わせれば統合開発環境を構築出来る。
ただし、設定ファイルを多用して各種の機能を実現する仕組みになっているので、設定が面倒。まあ慣れれば出来るが。
と言う感じか。
ワテの場合、主にVisual Studioを使っているが、PHPのデバッグ機能がVisual Studioには標準装備されていないので、PHPやWordPressなどのWeb系プログラミングではVisual Studio Codeを使う場合が多い。
「Wareko式エクセル罫線自動修復VSTOアドイン」ダウンロード
さて、「Wareko式エクセル罫線自動修復VSTOアドイン」を試してみたい人向けにダウンロード出来るようにした。
ダウンロードしたい人はここからどうぞ。
一つのZIPファイル RuleLinesRepairVB.zip(約300KB)がダウンロードできます。
「Wareko式エクセル罫線自動修復VSTOアドイン」のインストール方法
RuleLinesRepairVB.zipをダウンロードしたら、解凍する前に以下の設定が必ず必要になります。
いくつかのファイルに対して「ブロックの解除」が必要
RuleLinesRepairVB.zipファイルを右クリックして下図のメニューを表示します。
図 他のサイトからダウンロードしたVSTOのインストールでSystem.Security.SecurityExceptionが出る場合の対策
上図に於いて、全般タブの下部にあるセキュリティと言う項目の右端にある「許可する」のチェックボックスにチェック✅を入れます。そして「適用」をクリックすると「ブロックの解除」が適用されます。メニューを閉じます。
この作業が完了したら、RuleLinesRepairVB.zipファイルを解凍して下さい。
.vstoファイルと.dll.manifestファイルも「ブロック解除」を行う必要あり
解凍すると以下のようになります
この中にある .vstoファイルと.dll.manifestファイルの両方に対して、同じように「ブロックの解除」を行ってください。(Ken’ichiro Ayakiさんに教えて頂きました )
それらの作業が完了したら setup.exeをクリックして実行すると当VSTOアドインをインストールする事が出来ます。
もしこのVSTOアドインが不要になった場合には、コントロールパネルの「プログラムと機能」から名前「RuleLinesRepairVB」で検索して、削除(アンインストール)出来ます。
勝手にsetup.exeが削除されてしまう場合もある
なお、場合によっては、ZIPファイルをダウンロードした直後に、ノートン360などのウイルス対策ソフトがsetup.exeを勝手に削除してしまう場合がある(下図)。
図 ノートン360がsetup.exeを勝手に削除してしまう例
この場合には一時的にノートン360を無効化する必要があるだろう。
まあその辺りは皆さんの判断でやって下さい。
ノートン360などのセキュリティソフトが警告を出した場合の対策
ノートン360などのセキュリティ対策ソフトがインストールされているパソコンの場合、setup.exeを実行した瞬間に警告が出ます。
下図はワテのパソコンのノートン360が反応した例を示します。
図 ワテのパソコンのノートン360がsetup.exeに反応した例
まあ、確かにこのプログラムは本日公開したやつなので、世界中で使っているのはワテ一人なのだ。
従ってノートンのデータベースにはこのプログラムに関するウイルス情報が全く無いのだ。
なので、こんな怪しいプログラムは使わないほうがいいですよと言う警告なのだ。
まあ確かに、ワテが悪意のあるハッカーならプログラムの中に不正なコードを書き込んで皆さんのパソコンから個人情報を盗んで、コッソリとワテのメールアドレスに送信するなんて言う仕組みを入れる事は、原理的には可能だ。
ただし、そんなプログラムを作るにはかなりの高度なテクニックが必要だろう。
今の場合、EXCELのVSTOアドインDLLだから、エクセルの実行ファイルEXCEL.EXEと連携して動いている。そのDLLを使ってパソコンの中の個人情報を探すなんてのは、果たして出来るのか?
もしやるとなると、DLLインジェクションなどの手法を使ってEXCEL.EXEの一部の機能を横取りしてワテ自作DLL内に潜ませた不正コードを実行するようにするなどの手口が考えられる。
と言う事で、原理的にはやれば出来るが、ワテの場合、そんな不正な手口には全く関心は無いし、そもそも、そんな不正プログラムを書いている暇も無いし。
まあ、もし皆さんがsetup.exeを実行した場合に、セキュリティ対策ソフトが警告を出した場合には、ワテを信用して頂いてインストールを続けても良いし、こんなヤツ絶対に信じられないと言う人はインストールを中断して頂いても良いです。
Microsoft Officeカスタマイズインストーラー警告が出た場合の対策
例えばノートン360が出した上図の警告画面で「このプログラムを実行する」を選択した場合、setup.exeは実行される。
ところが、Microsoft Officeカスタマイズインストーラーと言うやつが、別の警告画面を出す(下図)。
図 Microsoft Officeカスタマイズインストーラーが出す警告画面
上図のように、Microsoft Officeカスタマイズインストーラーと言うやつがワテ作成のアドインソフトに対して、以下のメッセージを表示するのだ。
一体全体、ワテはそんなに怪しいのか!!
まあ確かに、聖人君子で無い事は言うまでも無いが。
ワテを信用出来る人は、この警告が出た場合には、警告を無視して「インストール」ボタンをクリックして下さい。
で、兎に角、ワテを信用して頂いてsetup.exeを実行して頂いてインストールが完了したとしよう。
エクセルのリボンのアドインタブに「罫線修復」ツールが追加される
無事にインストールが完了すると、エクセルを起動した時に自動でこのアドインが読み込まれる。
図 EXCEL2013のアドインタブに「罫線修復」ツールが追加される
上図のようにEXCEL2013が起動したら、アドインタブをクリックすると下図のように「罫線修復」ツールが追加されているのが分かる。
「Wareko式エクセル罫線自動修復VSTOアドイン」の実行例
以下では、罫線自動修復ツールの使い方を幾つかの例で紹介したい。
修復したい領域よりも1セル以上外側を選択する
例えば下図のように表の中央の罫線が消えてしまった。
図 表の中央の罫線が消えた場合
この場合には、下図のように罫線を修復したい領域よりも少なくとも1セルは広い領域をマウス選択してから「罫線の修復」を実行して下さい。
図 罫線を修復したい領域よりも少なくとも1セルは広い領域をマウス選択
その結果、下図のようにいい感じで罫線が復元出来ました。
図 表の中央の罫線が消えていたが、無事に復元できた例
どうでしょうか!
素晴らしいでしょう!
いつもの自画自賛
CTRLキーを押しながら複数領域の選択にも対応している
さて、もう少し複雑な例を紹介したい。
下図のように罫線が消えた領域が二箇所にある。
この場合、表全体を囲むように広くマウス選択しても良い。
下図の例では、それで「罫線の修復」を実行しても期待通りに動くだろう。
ところが、場合によっては表の中の特定の場所は元々罫線を描きたくないので罫線が無い場合もある。
それにも係わらず表を全選択して「罫線の修復」を実行すると、罫線を描きたくない場所にも罫線を描いてしまう問題がある。
図 罫線を修復したい場所が二箇所ある例
その対策としては、下図のように罫線を修復したい場所のみ選択して(1セル広く)おいて、「罫線の修復」を実行すれば良い。
下図のように複数領域を選択したい場合には、CTRLキーを押しながらマウス選択すれば可能だ。
図 CTRLキーを押しながら二カ所の飛び地を選択した例
あとは、リボンタブの「罫線の修復」を実行すれば良い。
実際の処理の様子を以下の動画でお見せしよう。
図 CTRLキーを押しながら二カ所の飛び地を選択して罫線修復を実行する例
完璧や!
上のアニメで、もし一箇所の領域しか選択せずに「罫線の修復」を実行した場合には、その選択領域のみ罫線修復して、他の領域の罫線は修復しない仕様にしています。
まとめ
当記事では、コロナウイルス第二波のせいで不要不急の外出を控えているワテが暇なので開発してみたエクセル操作を飛躍的に使い易くする画期的なツールを紹介した。
「Wareko式エクセル罫線自動修復VSTOアドイン」
だ。
使い方は簡単で、罫線を修復したい領域を囲むようにマウスで選択する。
少なくとも1セル以上は外側に広く選択すると良い。
あとは「罫線を修復」ボタンをクリックするだけで良いのだ。
まあ、どんなアルゴリズムで罫線修復機能を実現しているかは、このツールを使っていただければ大体は推測出来ると思う。まあ、AIなどと言う大掛かりなツールではなくて、物凄く簡素なアルゴリズムだ。
なお、「Wareko式エクセル罫線自動修復VSTOアドイン」の注意事項としては以下の通り。
- Undo機能は無い
- A列や1行目の罫線は復元出来ない(1セル以上外側を選択出来ないので)
- 広大な領域に対して実行すると物凄く時間がかかる(何十分待っても終わらない)
などか。
特に三番目の広大な領域に対して実行すると、場合によっては何十分待っても処理が終わらない事がある。
その場合には、ESCキーを連打すると中断する処理を入れているが、恐らく正常に動作するとは思うのだが、万一効かない場合には、終わるまで何時間も待つか、あるいは、タスクマネージャーからエクセルを強制終了するしかない。
なので、重要なエクセルファイルを編集している場合に、この「Wareko式エクセル罫線自動修復VSTOアドイン」を試したい人は、罫線修復機能を実行する前にファイルの上書き保存をしておくのが良いだろう。
もしこの「Wareko式エクセル罫線自動修復VSTOアドイン」に対する世間の反応が良い場合には、VBA版を作ってみようかなあと思っている。
あるいは、当VSTO版のVB.NETソースコードをオープンソースで公開しても良いかな。
あるいは、莫大な金額で買い取りたいと言う会社があれば尚良いのだがw
無いか。
コメント
すみません,早速試してみたいと思い手順に従い作業を行いましたが,Microsoft Officeカスタマイズ インストーラーで”配置マニフェストに署名するときに使用された証明書が信頼されていないか、アプリケーションが信頼された場所にありません。”と怒られます。
System.Security.SecurityException対策も施しておりますし,特段のウィルスソフトが入っていないにも関わらずこのエラーが出てしまいます。
何か方法ありましたらご教示ください。
Norimaki様
この度は小生のEXCEL VSTOアドインをお試し頂きまして有難うございます。
さて、早速私が持っている別のパソコン(ノートン360使用)でZIPをダウンロードして、
System.Security.SecurityExceptionのブロック対策も行って試してみましたところ、
正常にインストール出来ました。
(1)私の開発パソコン
(2)VMware上のWin10
(3)今回使った別のパソコン
の三台では、今のところエラー無くインストール出来ているので、現状ではNorimakiさんの症状は再現出来ていません。
申し訳ないですが、他の利用者の方からのコメントなど待つしかありません。
インターネットからダウンロードしたファイルには、『ゾーン識別子』が付いています。
よって、ゾーン識別子を削除する必要があります。
なお、開発者の手元のsetup.exeは、ゾーン識別がついていないため、上記のエラーが出ません。
詳しくは、自分が Qiita に書いた記事をご覧ください。
https://qiita.com/kenichiro_ayaki/items/73e4c19f9020d06b6076
その他の参考URLです。
https://wiki.clockahead.com/index.php?Coding%2FMSOffice%2FVSTO%2F%C7%DB%C9%DB%A4%CE%CA%FD%CB%A1
http://artfulplace.hatenablog.com/entry/2014/05/26/154251
Ken’ichiro Ayaki様
この度は小生のサイトにコメントありがとうございました。
早速、記事本文中のインストール作業に関して、お寄せ頂きました情報を追記させて頂きました。
ところで
>なお、開発者の手元のsetup.exeは、ゾーン識別がついていないため、上記のエラーが出ません。
との事ですが、私の場合、開発パソコンではない別のパソコンでダウンロードしたZIPファイルで試したのですが、その場合にもZIPファイルにはブロック解除のチェックボックスはありましたが、解凍で出来た
.vstoと.dll.manifestファイルにはブロック解除のチェックボックスは見付かりませんでした。
一般の利用者の方がZIPファイルをダウンロードした場合は、ZIPファイルだけでなく.vstoと.dll.manifestファイルもブロックされるんですね。
いずれにしても、大変役立つ情報のご提供、感謝です。
RuleLinesRepairVB.zipに関しての「ブロックの解除」は説明済だったのですね。見落としてしまい失礼いたしました。
ブロックの解除とは、RuleLinesRepairVB.zipからゾーン識別子を削除する操作に相当します。また、zipからゾーン識別子を削除すると、それを解凍したファイルにゾーン識別子は付与されません。
もしかすると、Norimakiさまは、RuleLinesRepairVB.zipからゾーン識別子を削除したのち、Zipを解凍せずにsetup.exe を実行されたのかもしれません。
その場合にも、”配置マニフェストに署名するときに使用された証明書が信頼されていないか、アプリケーションが信頼された場所にありません。”のエラーが表示されてインストールできないです。
Ken’ichiro Ayaki様
>Zipを解凍せずにsetup.exe を実行されたのかもしれません。
なるほど、それなら辻褄が合いますね。
この度は大変有益な情報を提供していただきましてありがとうございました。
ちなみに、このZIPファイルはノートン360のファイルインサイト情報で見る限りは、今のところ全世界でダウンロード5件以内との事です。
やっぱり発行元が不明な実行ファイルは、皆さん敬遠しますよね。
これを機会にデジタル証明書の取得を調査してみます。
warekoさん,Ken’ichiro Ayakiさん:
お二方ともご教示くださいましてありがとうございます。
結論から申し上げますと依然としてインストールできておりません。
ブロック解除についてはzipファイル解凍後にsetup.exeを実行しております。
それでもインストール不具合が解消されません。
また,Ken’ichiro AyakiさんのQita記事下方にありましたバッチファイルも試しに実行しましたが,こちらもエラー解消には至っていない状況です。
なお,warekoさんのコメントに,
>>ところで
>なお、開発者の手元のsetup.exeは、ゾーン識別がついていないため、上記のエラーが出ません。
との事ですが、私の場合、開発パソコンではない別のパソコンでダウンロードしたZIPファイルで試したのですが、その場合にもZIPファイルにはブロック解除のチェックボックスはありましたが、解凍で出来た
.vstoと.dll.manifestファイルにはブロック解除のチェックボックスは見付かりませんでした。
とありますが,自分の環境においてもブロック解除せずにzip解凍後,.vstoと.dll.manifestファイルにブロック解除のチェックボックスがございませんでした。
本件について調べるとほとんどが上記2ファイルのブロック解除で解消されると記述されてますが,当環境ではそのチェックボックスさえ出現しない状態でありまして,何か別のセキュリティでも作用しているのかと混乱しているところです。
また何か分かりましたらお知らせ下さればと思います。
どうもありがとうございました。
自分の環境では、
1.RuleLinesRepairVB.zipのブロック解除。
2.デスクトップに RuleLinesRepairVB のフォルダを解凍。
3.setup.exe の実行
という一連の作業にて、本件VSTO Plugin のインストールが可能でした。
ご報告まで。
Ken’ichiro Ayaki様
大変貴重な情報をお寄せ頂きまして有難うございます。
無事にインストール出来たと言う事例が一つでも得られたので、少しは安心しました。
Norimakiさんの環境でなぜインストール出来ないのかは気になるところですが。
ちなみに、罫線自動修復ツールをお使い頂きました感想はいかがでしょうか?
あんまり役に立たないでしょうかw
罫線自動修復ツールは、なかなか面白いツールだとおもいます。今までにない視点ですしね。
Excelを多用する方にはアピールするかとおもいます。
よろしければ、Vector等にアップロードいただければ幸いです。
Ken’ichiro Ayaki様
罫線自動修復ツールに関する感想ありがとうございました。
Vectorへのアップロードも検討します。