実験や分析データは専用の分析ソフトからExcelやテキストファイルの生データで取り出されることが多く、必要な数値データを抽出して、見やすいグラフや表の形式に編集する必要があります。
と思い立って、「テクストファイルで出力された実験の生データの特定箇所を読み込んで、特定のExcelフォルダに読み込む」ExcelマクロVBAを作成したので、記載しました。
あわせてVBAの作成依頼について、ココナラへの依頼についてもまとめています。
実験のrawデータを自動でExcelに取り込む
実験生データの解析に時間がかかっています。
と言うのも、実験のrawデータは、測定器具のソフトによっては、テキストファイルで出力されます。
このrawデータを目的に応じて、エクセルで加工を行う必要があるのですが、大部分を占めるのは決まった作業手順です。
だいたいの作業が「テキストファイルの該当箇所から数値データをコピー、解析用Excelシートの該当箇所にペースト」してから、解析作業に取り掛かることになります。
上記のかっこで囲った部分を、 エクセルのVBAで自動化することができれば、どう考えたって一瞬で終わる作業になります。
ちまちま解析するのが、本当に時間の無駄…
Excel VBAの勉強
今回、ExcelのVBAをゼロから始めるにために参考にしたのは「たった1秒で仕事が片づく Excel自動化の教科書」です。
ベストセラーになった本なので、ご存知の方も多いと思います。
講義の内容がそのまま教科書になったような本です。
エクセルの VBA の知識が全くない私にとっては、本当に初歩的な VBA の読み方を学ぶことができて有用でした。
ただ、章の構成が項目ごとになっていないため、実際にVBAを記入しているときに、後から辞書のように使用して、参照するという使い方には不向きです。
VBAの逆引き時点のようなテキストがもう一つ必要かな、と読んでいて感じました。
また、一部のVBAの解説が、ネットで公開されていますが、その VBA が本の方だと微妙に間違っていて、ネットの方が正しいです。
関連 ➢ 【20代の若手理系職におすすめ】実際に読んで実践した中から厳選|分野別・実用的なビジネス書 まとめ【新入社員のスキルアップ】
初心者的なVBAの作成手順:初心者であまり理解していなくてもできたVBA
本職の人からしてみると邪道な方法だと思いますし、VBAあまり理解せずに作っているのはナンセンスかもしれません。
ですが、プログラミング系が本職ではなく、予備知識に乏しい素人が、VBAを理解するために時間を割くのは非効率的だし、ほかに応用が利くわけでもない…
今ここで表面的に使えて、問題解決ができればOKという感じでVBAを実装しました。
- VBAの基本(英語で言うbe動詞と一般動詞の使い方くらい基本的な構文)を「たった1秒で仕事が片づく Excel自動化の教科書」で理解。
- VBAで自動化したい処理を「マクロの記録」を使ってVBA構文にする。
- 細かいカスタマイズはネットで調べて追加(ハリボテ化)
ポイントは自分の行いたい処理を単純化することだと思います。
初心者が少しいじるだけで実装できるよなシンプルな構造でVBAを組み立てることを意識しました。
例えば、今回の肝であった「フォルダ内のテキストデータを読み込む」は「フォルダ内のファイル名をExcelに一覧にする(ネット検索)」+「一覧になっているファイル名と同一名のテキストデータを読み込む(マクロの記録)」で実装しています。
やりたいこと「フォルダ内のテキストデータを読み込む」
→実装したこと「フォルダ内のファイル名をExcelに一覧にする(ネット検索)」+「一覧になっているファイル名と同一名のテキストデータを読み込む(マクロの記録)」
組んだVBAマクロ
実際に組んだマクロと詳細は以下の通りです。
複数の実験データのcsvファイルを読み込んでExcelに書き出すマクロです。
【ファイル一覧の取得】
Sub ファイル一覧の取得()
Dim i As Long, FSO As Object, f As Object
Const Path As String = "「変換したいデータを保存したフォルダ」\\●\データ変換"
Set FSO = CreateObject("Scripting.FileSystemObject")
For Each f In FSO.GetFolder(Path).Files
Range("$B$1").Select
i = i + 1
Cells(1, 1 + i) = f.Name
Next f
Set FSO = Nothing
End Sub
【vba 複数のテキストファイルをcsvファイルとして読み込む】
Sub データ読み込み()
'
' データ読み込み Macro
'
'
Dim i As Long, FSO As Object, f As Object
Const Path As String = "「変換したいデータを保存したフォルダ」\\●\データ変換"
Set FSO = CreateObject("Scripting.FileSystemObject")
For Each f In FSO.GetFolder(Path).Files
Range("$B$1").Select
i = i + 1
Cells(1, 1 + i) = f.Name
Next f
Set FSO = Nothing
Dim j As Long
For j = 2 To 30
ChDir _
"「変換したいデータを保存したフォルダ」\\●\データ変換"
Workbooks.OpenText Filename:= _
"「変換したいデータを保存したフォルダ」\\●\データ変換\" & Cells(1, j).Value _
, Origin:=932, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, _
Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(1, 1), _
TrailingMinusNumbers:=True
Dim lngYLine As Long
Dim intXLine As Integer
lngYLine = Range("B45:B60").Find("%").Row
intXLine = Cells.Find("%").Column
Cells(lngYLine, intXLine).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Windows("「マクロを実行するファイル名」.xlsm").Activate
Cells(3, j).Select
ActiveWindow.SmallScroll Down:=-18
ActiveSheet.Paste
Next j
End Sub
マクロの詳細(言い訳)
マクロの流れとしては
- 読み込みファイルを所定のフォルダに保存。
- マクロ1:フォルダ内のファイル名を読み込む。(必然的に生データにつけたサンプル名を読み込むことになる)
- マクロ2:所定フォルダ内のテキストファイルをマクロ1で読み込んだ情報の元に、該当箇所をデータとして抽出し、マクロ操作したファイル上に読み込む。
といった流れです。
以下のサイトを参考にすると、読み込んだファイルを別のフォルダに移動させることができます。
任意のフォルダに保存したファイルを読み込むというマクロが組めず←
一度、別のマクロで任意のフォルダ内のファイル名を取得し、任意のフォルダ内+読み込んだファイル名に一致するファイルを読み込むという二段構成になってしまっています。
しかも、「全ファイルを読み込み終えて、該当するファイルがなくなったら終了させる」方法もわからないので←
エラーが出る仕様です…。エラーウィンドウで「OK」を選択すれば問題ないので、今のところ放置。
追記:にエラーを解消しました。
また、当該ブックでのマクロの実行のさせ方がわからないので←
ファイル名をダイレクトに入力して指定しています。
同様の理由で、データを保存するフォルダも相対参照ではなく絶対参照させているので、フォルダの場所もダイレクトに入力して指定しています。
つまり、素人が作製したグダグダなマクロということです。
関連 ➢ 【転職で年収が上がる】実際に150万円上がってわかった理由と根拠
外部業者へ依頼
ExcelのVBAを外部業者にお願いしたら高いのだろうな…と検索してみると、やはり5~10万くらいはします。
そうですよね、企業向けがほとんどですもんね…
詳細 JOBHUB
と調べていくうちに安く依頼できそうなところを発見。
CMで宣伝も行っているココナラというサイトでExcelのVBAやマクロの作成は1,000円~程度で依頼できるとのこと。
とりあえず登録は無料でできるので、VBA作成の価格や条件を確認するために、無料登録をしてみました。
入力した内容はメールアドレス、ユーザー名、パスワード、生年月日、性別です。
もちろん、VBAやマクロの難易度によって値段は変わってくるみたいですが、テキストファイルの一括読み込みって、そこまで難易度高くないよ…ね?
検索する際には、「PRO認定*1サービスを優先表示」という品質・納期などに関する高い基準を満たしたサービスに与えられるラベルがついている受注主だけで検索をすることも可能です。
*1 PRO認定とは…実績確認済み・機密保持契約済み・運営優先サポートがそろった受注主のことです。
実際に利用したかたの口コミが掲載されていて、サービスのサンプルもアップロードされているので、口コミとサンプルを確認して、良さそうな人を確認しています。
「出品者に問い合わせる」ことも可能なので、数名の方にコンタクトを取り、相見積もりを行った結果、8,000円が最安値となりました。
でも、正直8,000円は高いので、今回は稚拙ながら自分で作成しました。
まとめ:数十分かかっていた操作が数秒で完了
これまでに数十分かかっていたデータ整理の作業が数秒で完了するようになりました。
不毛なルーティンワークはすべて自動化するのがおすすめです。
関連 ➢ 【男女共通】ビジネス効率アップのための愛用品【ガジェット&文房具&持ち物&デスク小物】
コメント