- ベストアンサー
マクロを使ってCSVファイルを選択し、一枚のxlsシートに書き出す方法
- 今日と昨日の日付のCSVファイルを選択し、マクロを使って一枚のxlsシートに書き出す方法を教えてください。現在は毎日11行目を書き直して処理しています。
- CSVファイル群から、今日と昨日のファイルを選択し、マクロを使って一枚のxlsシートに書き出す方法について教えてください。毎日11行目を書き直して処理しています。
- マクロを使用して、今日と昨日の日付のCSVファイルを選択し、一枚のxlsシートに書き出す方法について教えてください。毎日11行目を書き直して処理しています。
- みんなの回答 (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は「全選択」とか「使用領域選択」とかで使いませんか? いや、使わないなら構わないんですが(笑)。 個人的にはかなり使うショートカットキーなのでちょっと引っ掛かりました。 失礼しました。