VBAを利用して、随時更新されるcsvファイルをリアルタイムで読み取るプログラムを作成しました。
随時更新される売上データを題材に作成しています。
csvReadImmediately.zip
1 file(s) 34.90 KB
このエクセルファイルの作り方
①マクロを使えるようにする
「マクロを使えるようにする」を参照
②元データとするCSVファイルを用意
③読み取ったCSVを書き込むテーブルを作成
④テーブルの値を集計する任意のピボットグラフを作成
⑤集計開始をするボタンを用意
※ボタンの追加方法は「以前の記事」を参考
⑥マクロを作成する
ボタン配置時の以下の画面で「マクロ名」を「Addup_Click」として「新規作成」を押す
⑤「Microsoft Visual Basic for Applications」にて以下のコードを記載
必要に応じて「★」のついた箇所を変更
Sub Addup_Click() Call ReadCSV End Sub Function ReadCSV() '★読み込み対象ファイルの絶対パスを指定 Dim filePass As String: filePass = "C:\SalesData.csv" '★書き込みを開始する行・列を指定 Dim startRow As Integer: startRow = 2 Dim startCol As Integer: startCol = 1 '★定期実行する間隔を指定 Dim waitSec As Single: waitSec = 5 Dim targetRow As Integer: targetRow = startRow Dim targetCol As Integer: targetCol = startCol Dim rowBuf As String Dim cellBufList As Variant Open filePass For Input As #1 '全行読み込み終わるまで繰り返し Do Until EOF(1) '1行読み込み Line Input #1, rowBuf '読みこんだ1行をカンマで区切り配列化 cellBufList = Split(rowBuf, ",") '配列分繰り返し For Each cellBuf In cellBufList Cells(targetRow, targetCol).Value = cellBuf '次の列へ targetCol = targetCol + 1 Next cellBuf '次の行へ targetCol = startCol targetRow = targetRow + 1 Loop Close #1 'ピボットテーブルの更新 Dim pvt As PivotTable For Each pvt In ActiveSheet.PivotTables pvt.PivotCache.Refresh Next '待機処理 Dim Tm As Single Tm = Timer Do DoEvents Loop Until Timer > Tm + waitSec '再帰 Call ReadCSV End Function