- ベストアンサー
CSVファイルのインポート
辞めた人のプログラムを書き換えています。 初心者なもので、あまりコードを理解しておりませんが、 一応できるところまで直してみました。 CSVファイルをアクセスにインポート、その後項目(FileName)を追加し、CSVのファイル名を追加した項目にいれたいです。 下記構文で、インポートまではできましたが 最後の方の dbs.Execute sql でエラーになります。 ここをクリアするにはどこを修正すればよろしいでしょうか? アクセスは2003です。 Private Sub Cmd_01_Click() Dim ercd As Integer Dim dbs As adodb.Connection Dim LsName As String Dim TName As String Dim Name1 As String Dim teigi As String Set dbs = CurrentProject.Connection If Nz(Me.txt_01) = "" Then MsgBox "インポートするファイル名を入力して下さい", vbOKOnly, "エラー" Me.txt_01.SetFocus Exit Sub End If 'ファイル名の取得 strError = 0 LsName = "\\St1\第2業務部\$運用\1010030 アールジービー\業務\RGB一時作業ファイル\なるには不備チェック\TESTkanno\" TName = Me.txt_01 LsName = LsName & TName & ".csv" 'インポートの確認 ret = MsgBox(TName & "をインポートしますか?", vbYesNo + vbQuestion, "インポート確認") If ret = vbNo Then Exit Sub End If Debug.Print LsName 'レコードの追加 teigi = "RGB定義" DoCmd.TransferText acImportDelim, teigi, TName, LsName, False, "" ret = MsgBox(TName & "をマスターに追加しますか?", vbYesNo + vbQuestion, "インポート確認") If ret = vbNo Then Exit Sub End If Call FileTuika End Sub Sub FileTuika() Dim sql As String Dim aa As Long sql = "INSERT INTO T_Mas (処理状況,請求日,学校識別コード,学校名,学校分類名,メールアドレス,名前,ふりがな,性別,生年月日,職業,高校所在地,高校名,学年,郵便番号,都道府県,区市町村&町域,番地以下,電話番号,FileName,区分,不備,不備理由,yu,gid,保留,処理済,件数報告日,納品日 )" & _ " SELECT [" & T_Mas & "].[処理状況], [" & T_Mas & "].[請求日]," & _ " [" & T_Mas & "].[学校識別コード], [" & T_Mas & "].[学校名], [" & T_Mas & "].[学校分類名], [" & T_Mas & "].[メールアドレス]," & _ " [" & T_Mas & "].[名前], [" & T_Mas & "].[ふりがな], [" & T_Mas & "].[性別], [" & T_Mas & "].[生年月日]," & _ " [" & T_Mas & "].[職業], [" & T_Mas & "].[高校所在地], [" & T_Mas & "].[高校名], [" & T_Mas & "].[学年]," & _ " [" & T_Mas & "].[郵便番号], [" & T_Mas & "].[都道府県], [" & T_Mas & "].[区市町村&町域], [" & T_Mas & "].[番地以下]," & _ " [" & T_Mas & "].[電話番号], '" & LsName & "'," & FileName & " From" & "LsName" Debug.Print sql dbs.Execute sql dbs.Close Set dbs = CurrentDb() With dbs For Each tdfa In .TableDefs If tdfa.Name = TName Then dbs.TableDefs.Delete tdfa.Name End If Next tdfa End With dbs.Close End Sub
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
ぱっと見。 ヒントはスコープの問題かな。 (変数を参照できる範囲をスコープと呼びます。) ローカル変数はプロシジャー内のみ有効。 'Call FileTuika 'End Sub 'Sub FileTuika() コメントにすれば動くかな? dbs.Execute sqlが越えても、次のステップでエラーになりそう。 それと Option Explicit をつけておいた方が良いよ。
その他の回答 (2)
- ShowMeHow
- ベストアンサー率28% (1424/5027)
LsName がテーブル名を入れた変数なんだったら、 " [" & T_Mas & "].[電話番号], '" & LsName & "'," & FileName & " From " & LsName とすべきだと思うが、、、 (Fromのあとにスペースが必要) イミディエィト・ウィンドウに表示させているSQLを再度ご確認ください。
- kurodai2
- ベストアンサー率38% (77/202)
エラーの内容を書かれないと分かりにくいと思いますが・・・ 見たところ、インサートで記述している項目の >区分,不備,不備理由,yu,gid,保留,処理済,件数報告日,納品日 が入れ込むデータ側(SELECT)の記述にありませんよね? 項目の数が違うのでエラーになっている気がします。