mayu
2024/03/07 (木) 19:17:50
fc5d2@6c788
CSVファイルは、1行目が空白行、2行目が項目(データあり)、3行目からデータな形式になっており、
実際にデータとして取得したいのは、3行目以降となります。
別の方法でも構いません
別案( Windows標準のpowershellワンライナーをVBAから実行 )をご紹介します
・ UTF8のテキストファイルを読み書き
・ テキストファイルの先頭X行を読み飛ばす
の両立に関しては、ADODB.Streamの利用より記述が簡潔になります
Sub SampleTK()
Const TARGET As String = "D:\Work\UTF-8のテキスト.csv"
Const SKIP_ROWS As Long = 1 '←読み飛ばす行数
Dim tail_path As String
Dim command As String
With CreateObject("WScript.Shell")
tail_path = .SpecialFolders("Desktop") & "\TK_" & Format$(Now, "yyyymmddhhnnss"".csv""")
command = "powershell ""gc -Path '" & TARGET & "' -Encoding UTF8 " _
& "| select -Skip " & CStr(SKIP_ROWS) & " | out-file '" & tail_path & "' -Encoding UTF8"""
.Run command, 0, True
End With
DoCmd.TransferText acImportDelim, , "T_サンプル", tail_path, True, , 65001
Kill tail_path
MsgBox Prompt:=command, Buttons:=vbOKOnly, Title:=CStr(SKIP_ROWS) & "行の読み飛ばし"
End Sub
通報 ...