非プログラマーでもできる!業務の自動化

【テキストCSVファイルデータの自動取り込み】Excel マクロVBAで実験解析の時短

当ページのリンクの一部に広告が含まれています。

実験や分析データは専用の分析ソフトからExcelやテキストファイルの生データで取り出されることが多く、必要な数値データを抽出して、見やすいグラフや表の形式に編集する必要があります。

時間ばっか取られて生産性がなさすぎる。面倒。自動化したい。

と思い立って、「テクストファイルで出力された実験の生データの特定箇所を読み込んで、特定のExcelフォルダに読み込む」ExcelマクロVBAを作成したので、記載しました。

あわせてVBAの作成依頼について、ココナラへの依頼についてもまとめています。

あわせて読みたい
FT-IR分析の基本と応用 【FT-IR測定の基本】 FT-IR測定とは フーリエ変換赤外分光光度計…試料に赤外光を照射し、透過or反射した光を測定する分析手法の事です。 FT-IRで何がわかるの 有機物の...
目次

実験のrawデータを自動でExcelに取り込む

実験生データの解析に時間がかかっています。

と言うのも、実験のrawデータは、測定器具のソフトによっては、テキストファイルで出力されます。

このrawデータを目的に応じて、エクセルで加工を行う必要があるのですが、大部分を占めるのは決まった作業手順です。

だいたいの作業が「テキストファイルの該当箇所から数値データをコピー、解析用Excelシートの該当箇所にペースト」してから、解析作業に取り掛かることになります。

上記のかっこで囲った部分を、 エクセルのVBAで自動化することができれば、どう考えたって一瞬で終わる作業になります。

ちまちま解析するのが、本当に時間の無駄…

どうにかしてこの不毛な作業をなくしたい…!

Excel VBAの勉強

今回、ExcelのVBAをゼロから始めるにために参考にしたのは「たった1秒で仕事が片づく Excel自動化の教科書」です。

ベストセラーになった本なので、ご存知の方も多いと思います。

講義の内容がそのまま教科書になったような本です。

エクセルの VBA の知識が全くない私にとっては、本当に初歩的な VBA の読み方を学ぶことができて有用でした。

ただ、章の構成が項目ごとになっていないため、実際にVBAを記入しているときに、後から辞書のように使用して、参照するという使い方には不向きです。

VBAの逆引き時点のようなテキストがもう一つ必要かな、と読んでいて感じました。

また、一部のVBAの解説が、ネットで公開されていますが、その VBA が本の方だと微妙に間違っていて、ネットの方が正しいです。

 関連  ➢ 【20代の若手理系職におすすめ】実際に読んで実践した中から厳選|分野別・実用的なビジネス書 まとめ【新入社員のスキルアップ】

あわせて読みたい
【20代30代の若手におすすめ】分野別・実用的なビジネス書📚 理系技術職は必見 自己啓発的なマインドに重点を置くビジネス書もありますが、本記事では実用的な内容で何かに特化したノウハウ本の中から、 と感じた書籍をまとめてみました。 [note tit...

初心者的なVBAの作成手順:初心者であまり理解していなくてもできたVBA

本職の人からしてみると邪道な方法だと思いますし、VBAあまり理解せずに作っているのはナンセンスかもしれません。

ですが、プログラミング系が本職ではなく、予備知識に乏しい素人が、VBAを理解するために時間を割くのは非効率的だし、ほかに応用が利くわけでもない…

今ここで表面的に使えて、問題解決ができればOKという感じでVBAを実装しました。

 

  1. VBAの基本(英語で言うbe動詞と一般動詞の使い方くらい基本的な構文)を「たった1秒で仕事が片づく Excel自動化の教科書」で理解。
  2. VBAで自動化したい処理を「マクロの記録」を使ってVBA構文にする。
  3. 細かいカスタマイズはネットで調べて追加(ハリボテ化)

 

ポイントは自分の行いたい処理を単純化することだと思います。

初心者が少しいじるだけで実装できるよなシンプルな構造で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:フォルダ内のファイル名を読み込む。(必然的に生データにつけたサンプル名を読み込むことになる)
  3. マクロ2:所定フォルダ内のテキストファイルをマクロ1で読み込んだ情報の元に、該当箇所をデータとして抽出し、マクロ操作したファイル上に読み込む。

といった流れです。

以下のサイトを参考にすると、読み込んだファイルを別のフォルダに移動させることができます。

任意のフォルダに保存したファイルを読み込むというマクロが組めず←

一度、別のマクロで任意のフォルダ内のファイル名を取得し、任意のフォルダ内+読み込んだファイル名に一致するファイルを読み込むという二段構成になってしまっています。

しかも、「全ファイルを読み込み終えて、該当するファイルがなくなったら終了させる」方法もわからないので←

エラーが出る仕様です…。エラーウィンドウで「OK」を選択すれば問題ないので、今のところ放置。

追記:にエラーを解消しました。

また、当該ブックでのマクロの実行のさせ方がわからないので←

ファイル名をダイレクトに入力して指定しています。

同様の理由で、データを保存するフォルダも相対参照ではなく絶対参照させているので、フォルダの場所もダイレクトに入力して指定しています。

つまり、素人が作製したグダグダなマクロということです。

でも、ココナラで依頼すると8,000円だと言われたし、自分でできたからゼロ円です。ドヤッ
自分の時給換算したの?結構時間かかってるよね?
(…聞こえないふり…)

 関連  ➢ 【転職で年収が上がる】実際に150万円上がってわかった理由と根拠

あわせて読みたい
【転職で給与が上がる】実際に年収150万円上がってわかった理由と根拠 [job-change-top] よく「あなたの適正年収は?」なんて煽り文を見かけると思います。 どうせ、転職をさせたいがための売り文句でしょ?と思っていましたが、転職活動で...



外部業者へ依頼

ExcelのVBAを外部業者にお願いしたら高いのだろうな…と検索してみると、やはり5~10万くらいはします。

そうですよね、企業向けがほとんどですもんね…

 詳細  JOBHUB

と調べていくうちに安く依頼できそうなところを発見。

CMで宣伝も行っているココナラというサイトでExcelのVBAやマクロの作成は1,000円~程度で依頼できるとのこと。

とりあえず登録は無料でできるので、VBA作成の価格や条件を確認するために、無料登録をしてみました。

入力した内容はメールアドレス、ユーザー名、パスワード、生年月日、性別です。

 詳細   得意を売り買いココナラ|公式ページ

もちろん、VBAやマクロの難易度によって値段は変わってくるみたいですが、テキストファイルの一括読み込みって、そこまで難易度高くないよ…ね?

検索する際には、「PRO認定*1サービスを優先表示」という品質・納期などに関する高い基準を満たしたサービスに与えられるラベルがついている受注主だけで検索をすることも可能です。

*1 PRO認定とは…実績確認済み・機密保持契約済み・運営優先サポートがそろった受注主のことです。

実際に利用したかたの口コミが掲載されていて、サービスのサンプルもアップロードされているので、口コミとサンプルを確認して、良さそうな人を確認しています。

「出品者に問い合わせる」ことも可能なので、数名の方にコンタクトを取り、相見積もりを行った結果、8,000円が最安値となりました。

 詳細   得意を売り買いココナラ|公式ページ

でも、正直8,000円は高いので、今回は稚拙ながら自分で作成しました。




まとめ:数十分かかっていた操作が数秒で完了

これまでに数十分かかっていたデータ整理の作業が数秒で完了するようになりました。

不毛なルーティンワークはすべて自動化するのがおすすめです。

ムダな仕事はさっさと終わらせて生産的な仕事をしていきたいですね。

 関連  ➢ 【男女共通】ビジネス効率アップのための愛用品【ガジェット&文房具&持ち物&デスク小物】

あわせて読みたい
【テレワークを快適に】仕事の効率アップするガジェット・文房具・小物 ガジェットは会社員だと制約が少しありますが… それでも、個人的に購入してオフィスで使用できるものを厳選してまとめました。私の愛用品です。 ピックアップしてみると...


ココナラへのリンク

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次