| 
    
     |  | >▼小僧様 Option Compare Database
 Option Explicit
 
 Private Sub EventLogAccess_Click()
 Dim txtData As Variant, FNo As Long, arrData, i As Integer
 Dim Con As New ADODB.Connection, Rec As New ADODB.Recordset
 Dim strFilePath As String, returnValue
 
 DoCmd.RunSQL "Delete From INPUTDATA"
 '[ファイルを開く]ダイアログボックスを表示
 WizHook.Key = 51488399
 returnValue = WizHook.GetFileName( _
 0, "", "", "", strFilePath, "", _
 "CSVファイル (*.csv)|*.csv", _
 0, 0, 0, True _
 )
 WizHook.Key = 0
 
 '[キャンセル]がクリックされた場合は即終了
 If returnValue <> 0 Then
 Exit Sub
 End If
 
 Set Con = CurrentProject.Connection
 Rec.Open "INPUTDATA", Con, adOpenDynamic, adLockOptimistic
 
 FNo = FreeFile
 Open strFilePath For Input As #FNo
 'ファイルの1行目の項目名部分を読み込む(何も処理しない)
 
 For i = 1 To 8
 Line Input #FNo, txtData
 Next i
 
 On Error GoTo ErrHndl
 'エラーが発生した場合にデータのインポートをなかったこと(ロールバック)
 'にするためにトランザクション処理として実行
 Con.BeginTrans
 '実際のデータ部分(2行目)からの処理
 Do While Not EOF(FNo)
 Line Input #FNo, txtData
 arrData = Split(txtData, ",")
 If arrData(0) = " " Then
 Exit Do
 End If
 Rec.AddNew
 '引用符を削除してからフィールドに値を代入する
 
 
 Rec("日付") = Split(arrData(2), " ")(0)
 Rec("時間") = Split(arrData(2), " ")(1)
 Rec("ComputerName") = arrData(4)
 Rec("Description1") = Split(arrData(7), "  ")(0)
 Rec("Description2") = Split(arrData(7), "  ")(1)
 
 
 Rec.Update
 
 Loop
 
 Con.CommitTrans
 
 Close #FNo
 DoCmd.OpenForm "TimeForm", acPreview
 Exit Sub
 
 ErrHndl:
 Close #FNo
 Con.RollbackTrans
 MsgBox "以下のエラーが発生したためロールバックしました。" & vbCrLf & _
 Err.Description, vbCritical
 
 
 End Sub
 
 上記のようにしたところ、yyyymmdd.csvのデータを編集しなくても、INPUTDATAテーブルへインポートされました。
 
 しかしインポートされたデータが""で囲まれてしまったのです。
 例:フィールド1 フィールド2 フィールド3・・・
 "2009/12/10  12:00:00"   "ComputerName"
 
 のような感じで、Split関数で分離させたものは、片方ずつに"が付き。
 Split関数を使用していないものは両端が""で囲まれておりました。
 そのため、正常に時間を取得させることができなくなったのです。
 
 
 Line Input #FNo, txtData←この時に全てのデータが""で囲まれていました。
 
 For i = 1 To 8
 Line Input #FNo, txtData
 Next i
 ↑この文を入れると、そうなるのでしょうか?
 
 ちなみに小僧様より戴いた、サンプルではFor文の箇所を
 1 to 8にしてもなぜか、インデックスが有効範囲にありませんと
 エラーが出ます。
 
 Do while not
 Do Until の部分が違うからでしょうか?
 
 一から勉強していては今回の業務には間に合いそうにもありませんので、
 どうかご協力をお願い致します。
 もちろん小僧様のお時間が許すときで結構ですので、ご返信の程
 お願い致します。
 
 
 |  |