VBAでプログラミングしてみた!!

 ということで、プログラミングしてみました。使った言語はVBA。……初耳です。
 VBAとは、Visual Basic for Applications の略で、Microsoftが提供しているソフト(ExcelとかWordとか)で使えるプログラミング言語、ということらしい。

 なので、WordとかExcelとかで「この作業自動化できたら楽なのにな〜」というときに、その処理を記述する際に使う言語ってことですね!

スポンサーリンク

こんな作業を自動化させたい!

 さて、漫画で描いていた「自動化させたい作業」というのは、「テキストの中からある特定の単語を見つけて、その単語を含む行を見つけたら、その前後の行もまとめて削除する」といったことです。
 この作業を自動化させよう!という考えに至ったのは、次のようなことがあったから。

 まず電子書籍を作るためには、必要なファイルを何個か用意しなくてはいけません。その中に「目次情報をもつファイル」があるのですが、このファイル、全ページを「目次だ!!」と認識してしまいます。

 ということはもちろん、目次にしたくない項目まで目次になってしまっているわけです。それでは困るので、目次にしたくない項目はファイルから消していきます。

 ……のですが、この消す作業をいうのがなかなかめんどくさい。
 まず、目次情報を持っているファイルを開きます。すると、そのファイルの中にはテキストがずらずら〜っと記述されています。そして、その中から目視で消したい範囲を見つけて、手作業で消していく。
 テキスト量も結構な量があるから、見落とす可能性もないとは言い切れません。

 この作業が一回切りならよかったのですが、これからも電子書籍を作っていく予定なので、この作業を毎回繰り返していくのは厳しいよね〜という流れになりました。
 そこで!私が元々プログラミングに興味があったこともあり、「良い機会だからプログラミングやってみようか〜」となった訳です!!学ぶ機会をもらえてありがたい限りです……。

 ということで、自動化させたいのは次の処理。

 ・テキストの中から”<Text>Pageー”が含まれている行がないか判定する。
 ・含まれている行があった場合、含まれている行とその行の前2行、後ろ3行をまとめて削除する。
 ・これをテキストの行数分繰り返す。

 です。こうやって見ると簡単そうじゃん!って気がしますが、頭パンクしそうになりながら作りました。

なんとか作ったものはこれ!

 文章で説明するよりも、画像を貼ったほうが分かりやすいかな~、と思うので画像を貼って説明しようと思います。

 まず最初に、整形したいファイルのテキストをコピーします。テキスト全部を画像として貼ろうとするととんでもない量になってしまうので、一部だけです。こんな感じのテキストがずらずら~っと延々続いています。多分この画像十枚分くらいはあるんじゃないかと。

 これらのテキストを全選択して、コピーしておきます。

 次に、テキストを整形するためのプログラミングが組まれたファイルを開きます。
 すると、メッセージボックスが表示されるので、指示に従ってボタンをクリックしていくと処理が完了します。

 ボタンには、
       手順① コピーしてきたテキストを貼る
       手順② 不要な行を削除する
       手順③ テキストを全部コピーしてフォームを閉じる
 と記されています。ボタンに記されている名前の通りの処理を、ボタンを押すとしてくれます。

 画像は、動きが分かりやすいファイルを開いた時と、一つ目のボタンを押した時のものです。

 この後、手順③までボタンを押していくと、メッセージボックスが閉じられて、整形されたテキストがクリップボードにコピーされた状態になります。
 最後にドキュメント内のテキストを空にして終わるから、実際に実行してみると「白紙になっちゃった!」と少し焦るんですけど、ちゃんとコピーされてるから大丈夫です。

 そしてコピーされたテキストを元の目次ファイルへとペーストして、上書きしちゃえば完成!!という感じ!

 画像だとちょっとわかりにくいけど、整形後のテキストはこの画像一枚で全テキストとなっています。整形前と比べると、とてもすっきりしました。

 作っていく段階で「こうしたらもっと分かりやすいんじゃない?」というのが出てきて、ちょっと機能を足してみました。
 ファイルを開いたらメッセージボックスが出てきて、その指示に従えば処理が終わるのとか。ボタンをクリックしたら、クリック済みのボタンは再度押せないようにするとか。

 こうやって見てみると、なんだかアプリケーションっぽくてすごい……。頭がパンクしそうになることが何回もあったけど、常に楽しい!!って気持ちのほうが勝ってたなあ。
 一回プログラミングをしたら終わり!にしてしまうと、きれいさっぱり忘れてしまいそうなので、この先も何かしら作りたいという気持ちでいっぱいです!!

  1. 匿名 より:

     私も自分の作業用にvbaを使う程度のライトユーザーですが、プログラムってパズルみたいで楽しいですよね。

    • イシクラ ユカ イシクラ より:

      そうなんです!!!
      人によって書き方が色々あるのも面白いですよね!!

  2. デコピン より:

    社内で使う工程管理システムや原価管理システムをVBAを使ってエクセルで作成して有りましたが、作った方が退職しちゃうとメンテが出来なくなっちゃいました事があります。
    私も一度その方からレクチャーを受けたことが有りますが、さっぱりわからなかったです。

    • もう より:

      VBAだと簡単に作成できる分自分ルールが横行しちゃって他の人がソース見ても解析するのに時間かなったりするんですよねー

    • イシクラ ユカ イシクラ より:

      メンテナンスできる人が一人しかいないのは困りますね😣
      プログラミングは考え方が難しいです…😣

  3. もう より:

    なかなか楽しそうなことやってるじゃないですか。(笑)
    これを機に一般的なコードの書き方を覚えるとよいかと。(上からだな(笑))
    できれば、各行の処理には必ずコメントを記載するようにすると他の人が見ても理解できるし、何よりも未来の自分が見たときに思い出せます。
    ここの行は何をどうしてるんだってのを日本語で書くことによって自身の理解も深まると思いますし。

    • イシクラ ユカ イシクラ より:

      楽しかったです!!!!
      今C#を少しずつ勉強してるのですが、毎回「なにから始めればいいんだっけ…?」と混乱してます…笑
      コメントも書いてみました!!
      後々見返して意味がわかるように書けてるかは謎ですが…😂

スポンサーリンク