
はじめまして。
【Access2003】を使用し、タブ区切りのテキストファイル読込をVBAで行っています。
カンマ区切りはわかるのですが、タブ区切りの方法がわからないので教えていただけませんか?
TransferTextを使用したかったのですが、読み込んだデータ1件1件に対して必須と桁数確認を行い、エラーがあった場合はテキストファイルにそのデータ1行を書き込み、エラーがない場合は1行テーブルに書き込みというように処理を分けたいからなのです。
とりあえず今のところカンマ区切りのCSVファイルを読み込むというようにしており、読み込む前にタブ区切りテキストファイルをカンマ区切りCSVファイルに変換する処理を入れようと思っています。
しかしタブ区切りテキストファイルをそのまま読むことができれば一番いいのですが。
ソースは以下の通りです。
'出力元CSVファイルを開く
lngFileNum = FreeFile()
'データ読込
Open strJsnFol & "\\" & strIriInf For Input As #lngFileNum
'CSVファイルの最初の行を読み込む
'CSVファイルより1件分を読み込み
Line Input #lngFileNum, strData
'カンマで区切って配列に代入
varData = Split(strData, ",", , vbTextCompare)
'データ種別のチェック
If varData(0) <> "XXX" Then
MsgBox "ファイルエラーです。", vbInformation + vbOKOnly
intErrFlg = 1
Exit Sub
End If
'タイムスタンプチェック
strSQL = " SELECT CREATE_TIME FROM TB WHERE CREATE_TIME = '" & varData(1) & "'"
'SQLを実行
If DBAC.ExecSelect(strSQL) = 0 Then
'同じ処理時間のデータがなければ、タイムスタンプを取得
strCreateTime = varData(1)
Else
MsgBox "すでに処理済です。", vbInformation + vbOKOnly
intErrFlg = 1
Exit Sub
End If
'テーブルを開く
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("IF_TB")
'CSVファイルの全レコードを読み込むループ
Do Until EOF(lngFileNum)
'CSVファイルより1件分を読み込み
Line Input #lngFileNum, strData
'カンマで区切って配列に代入
varData = Split(strData, ",", , vbTextCompare)
'データチェック
If varData(0) = "" Or Len(varData(0)) > 12 Then
intChkErr = 1
End If
If varData(1) = "" Or Len(varData(1)) > 12 Then
intChkErr = 1
End If
If Len(varData(2)) > 1 Then
intChkErr = 1
End If
'エラーがあればエラーファイルに書き込み
If intChkErr <> 0 Then
strFileName = strJsnFol & "\\" & "ERR.csv"
lngFileNum2 = FreeFile()
Open strFileName For Append As #lngFileNum2
End If
Print #lngFileNum2, "ERR1," & strData
Close #lngFileNum2
Else
'各フィールドデータをテーブルに追加
With rst
.AddNew
!K_NO = varData(0)
!S_NO = varData(1)
!CD = varData(2)
!CREATE_TIME = strCreateTime
.Update
End With
End If
intChkErr = 0
Loop
rst.Close
Close #lngFileNum
Exit Sub
何かいい方法があれば教えていただけませんか?
よろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
全角と半角文字が混在している...
-
htaccessで特定のディレクトリ...
-
C言語で特定の行を抽出する方法...
-
【Access2003】VBAでタブ区切り...
-
ExcelをCSV書き出す場合のシー...
-
VBAでCSVファイルを途中行まで...
-
エクセルVBA コードが同じでも...
-
MATLAB グローバル変数の宣言
-
vba dir の相対パス
-
MATLABのm-fileについて
-
readdir()で得られるファイル・...
-
フォルダが開かなくなりました。
-
batファイルでrenameができませ...
-
window.open でのファイル指定方法
-
CSVが可変長の場合の検索方法
-
read() on unopened filehandle...
-
MATLAB std::exceptionエラー
-
重複するデータを抽出できる秀...
-
dos変数の%~dp0は powershellで...
-
バッチファイルで、記号を含む...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチファイルの作り方(CSV→...
-
C言語で特定の行を抽出する方法...
-
【エクセル】改行無しテキスト...
-
タブの色を変更する方法
-
全角と半角文字が混在している...
-
空白文字 \\f と\\v の違いに...
-
エクセルのデータをテキストデ...
-
デルファイ TabControl タブの...
-
Edge スクレイピング
-
【Access2003】VBAでタブ区切り...
-
Excelのマクロで改行を含んだテ...
-
Flashで実現可能なのか知りたい
-
VBAのFileFormatで悩んでいるこ...
-
VBAでタブ区切りテキストの保存...
-
テキストファイル(tsv)を改行...
-
htaccessで特定のディレクトリ...
-
ExcelをCSV書き出す場合のシー...
-
エクセルVBA コードが同じでも...
-
awkスクリプトでダブルクォーテ...
-
batファイルでrenameができませ...
おすすめ情報