• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:今日と昨日の日付.CSVファイルを選択し読み込む)

マクロを使ってCSVファイルを選択し、一枚のxlsシートに書き出す方法

このQ&Aのポイント
  • 今日と昨日の日付のCSVファイルを選択し、マクロを使って一枚のxlsシートに書き出す方法を教えてください。現在は毎日11行目を書き直して処理しています。
  • CSVファイル群から、今日と昨日のファイルを選択し、マクロを使って一枚のxlsシートに書き出す方法について教えてください。毎日11行目を書き直して処理しています。
  • マクロを使用して、今日と昨日の日付のCSVファイルを選択し、一枚のxlsシートに書き出す方法について教えてください。毎日11行目を書き直して処理しています。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

あまりよく読んでいなかったりしますが、   With ActiveSheet.QueryTables.Add(Connection:= _      "TEXT;Z:\bme280-data\20171130.csv", Destination:=Range( _      "$B$4")) ココを例えば   With ActiveSheet.QueryTables.Add(Connection:= _     "TEXT;Z:\bme280-data\" & Format(Date, "yyyymmdd") & ".csv", _     Destination:=Range("$B$4")) こうすると、当日。 ついでに   With ActiveSheet.QueryTables.Add(Connection:= _     "TEXT;Z:\bme280-data\" & Format(Date - 1, "yyyymmdd") & ".csv", _     Destination:=Range("$B$4")) こうすると1日前。 ただし、休日を挟む場合は何かと色々考えないといけませんね。 別解。 インプットボックスを使って、いちいち日付を指定「させる」やりかた。 Dim myDay As String   myDay = Application.InputBox(Prompt:="日付を指定(YYYYMMDD)" _              & vbNewLine & "※省略すると本日")     ' キャンセルされたら終了。     If myDay = "False" Then Exit Sub      ' 空白だったら今日。     If myDay = "" Then myDay = Format(Date, "yyyymmdd")    With ActiveSheet.QueryTables.Add(Connection:= _     "TEXT;Z:\bme280-data\" & myDay & ".csv", _     Destination:=Range("$B$4")) など。 こちらの方が汎用性は高いかも。 ただ、「日付」として翌日などを判断させて 連続で処理しようと思うと注意が必要です。   ※20171130 + 1 = 20171131  ・・??? その場合は、初めに日付の体で「2017/11/30」と打たせ、 Format関数で整えるのが望ましいです。 まぁ、翌日を読むときにもインプットボックスを出せば良いだけですが。 ・・・という意味でも汎用性は高いです。 (主にテストデータを用意するのが面倒だったという理由で) どちらもテストしていませんので、少し手直しが必要かもです。 あー、あと細かい話ではありますが・・ CTRL+Aは「全選択」とか「使用領域選択」とかで使いませんか? いや、使わないなら構わないんですが(笑)。 個人的にはかなり使うショートカットキーなのでちょっと引っ掛かりました。 失礼しました。