同じ形式で何度もデータ採取を行っています。
そのデータを毎回同じ形式でグラフ化しています。
それを少ないクリック数で行うマクロです。
マクロ自体はあったのですが自分で作成することができませんでしたがやっと理解して扱えるようになりました。そのマクロの記録です。
実際のマクロ
Sub データ取り込み()
'
' データ取り込み Macro
'
'
ChDir "ファイルの場所"
Workbooks.Open Filename:= _
"データを導入するエクセルのパスとエクセル名"
Sheets("データを入れるシート名").Select
Range("A1").Select
Selection.QueryTable.Refresh BackgroundQuery:=True
Sheets("グラフ化後のシート").Select
End Sub
今見るとちょっと無駄がみえます。
行数が減らせる気もしますが、検証するのが面倒なのでこのままいきます。
あとは、導入するファイルを加工して完成です。
実際の動作は
1、ボタンをクリックする
2、指定したエクセルファイルが開き、指定のシートのA1が選択される
3、導入したいcsvファイルやtxtファイルを指定するダイアログが開く
4、ファイルを選択するとファイルが開き、指定したシートが開く
5、エクセルファイルを保存せずに終了する
このように動作させることで、ボタンを押すことで毎回同じように動作します。
データのグラフ化はあらかじめ、導入するファイルに範囲指定しておきます。
毎回同じセル範囲を加工したいため、可能です。
Selection.QueryTable.Refresh BackgroundQuery:=True
このコードはただのエクセルシートにかけてもエラーになるだけです。
一度外部データと接続したことのあるシートにかけることでダイアログが開くようになります。最初接続する際に設定が出るので、選択します。
私の場合はカンマで区切ってほしいのでその設定で導入しています。
エクセル2019ではcsvファイルが数字として読み込むことがデフォルトではできません。そのため
エクセルの[ファイル]>[オプション]>[データ]>[レガシデータインポートウィザードの表示]項目から「テキストから(レガシ)」にチェックを入れます。
するとデータ導入に従来のウィザードが追加されるのでここから導入を行うとcsvファイルが数字で取り込めます。古いエクセルのように。
一度接続すると、外部データとの接続でプロパティが開けるようになっています。
で、入れたデータが新しく導入するデータの邪魔にならないように消します。
以上の要領で指定したシートに一度ファイルを導入しておけば上のコードを入れるだけでダイアログが開くようになります。
正直まだまだ改善の余地はあります。エクセルのファイルを保存して終われせてもいいようにデータを導入する箇所のセルをクリアする機能を付けたり、そもそも新しいエクセルファイルが開かないで一枚で完結するようにしたり。今回はこの辺で妥協しておきます。自分で使う用だけなので。