【Access97】取り込みエラー
txtファイルで保存してあるデータをAccessへ取り込む作業をしています。
項目毎の区切りはカンマ区切(,)になっており、データ内容は「数値」「テキスト」「日付」等各種あります。
txt内の「日付」形式が『d-m-y』なのでAccessのフィールド書式も『日付(M)』にしてあるのですが取り込みエラー(データ型の変換エラー)となってしまいます。
そこで、txtファイルをExcelで開いて[データ-区切り位置]で区切り、書式設定で「日付」を『yyyy/mm/dd』に変更してからAccess(フィールド書式を『日付(S)』に変更)へコピーしています。
<例> txtデータ:01-AUG-10 → Access:2010/08/01
この作業を毎回しているのですが、Excel上ではなくtxt上で直接『d-m-y → yyyy/mm/dd』に変換、もしくは『d-m-y』のままtxtから直接Accessに取り込む方法はありませんか?
尚、データは数千件あり「日付」もバラバラな為”置換”機能だとかなりの時間がかかってしまうので”置換”機能は使っていません。
No.4
- 回答日時:
Access97ならばテキストファイルをテーブルとして
リンクし、他のテーブルに日付を変換しながら
移し変えればいいのでは。
リンクするときはツールバーのファイルから
外部データの取り込み、テーブルのリンク、
と進み、ファイルの種類をテキストファイル
とし、対象のテキストファイルを選択して
クリックするとリンクウィザードが出るので、
区切りをカンマを選択し、フィールドのオプションで
テキストファイルに項目を設定していなければ
ここでフィールドの名前を設定し、各フィールドは
数値、テキストと設定し、日付をテキストに設定。
以後、完了まで進みます。
一応、フィールドの名前と型を以下のようにします。
数値(数値型)、テキスト(テキスト型)、日付(テキスト型)
次に、同じフィールド名を持つテーブルを作ります。
ただし、日付のフィールドは日付型にしておきます。
コードは以下のような感じですが。
テキストファイルおよび、テーブルの名前を変数に
しておいて、テキストボックスにファイル名、テーブル名を
入れてそれを変数で受け取り、コードに反映するように
しておけばいいのではと思います。たとえば以下ののように、
テキストボックス名をtxファイル名、txテーブル名にして、
Private Sub cmdインポート_Click()
Dim db As Database
Dim rs1 As Recordset
Dim rs2 As Recordset
Dim myTxt As String
Dim myTbl As String
Set db = CurrentDb
Set rs1 = db.OpenRecordset(Me!txファイル名, dbOpenDynaset)
Set rs2 = db.OpenRecordset(Me!txテーブル名, dbOpenDynaset)
rs1.MoveFirst
Do Until rs1.EOF
rs2.AddNew
rs2!数値 = rs1!数値
rs2!テキスト = rs1!テキスト
rs2!日付 = DateValue(rs1!日付)
'あるいは以下までする必要があるかは不明ですが
'必要ならば以下に変更。または必要に応じて変えてください。
'rs2!日付 = Format(DateValue(rs1!日付), "yyyy/mm/dd")
rs2.Update
rs1.MoveNext
Loop
rs1.Close: Set rs1 = Nothing
rs2.Close: Set rs2 = Nothing
db.Close: Set db = Nothing
End Sub
要点は、リンクするときにテキストファイルの日付をテキスト型
に設定しておくことです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/03 13:18
- Access(アクセス) accessでexcelを読み込む時のデータ型 1 2022/03/28 19:45
- Excel(エクセル) EXCELの外部データ取得ができない 1 2023/03/23 09:03
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- Excel(エクセル) 【vba】日付の形式が勝手に変わってしまう。 1 2022/09/29 10:54
- その他(プログラミング・Web制作) テキストデータ変換(プログラミング、linux、python) 8 2023/08/08 16:39
- Access(アクセス) Accessのデータ型の日付/時刻型について 1 2023/04/02 17:03
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- Visual Basic(VBA) VBAでエクセルをtxtに変換するとエクセルでカンマを含む文字数字がtxtでは「""」付にならないよ 1 2022/08/27 12:17
- Visual Basic(VBA) VBAで日付入力しているのですが 4 2023/03/02 11:25
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
日付型のフィールドに空白を入...
-
SQL文で パラメータが少なすぎ...
-
Excleピボットでデータのない部...
-
Access クエリで、レコードの無...
-
Excel→Accessへの日付データの...
-
Accessのデータ型の日付/時刻型...
-
【Accessで困っています...
-
指定日付を起点にして最新日付...
-
クロス集計のユニオンクエリー...
-
アクセス97のVBAで日付項目をヌ...
-
VBA 別シートの同じ日付の欄に...
-
Accessで日付の比較がうまくい...
-
SQL Server2005のクエリで「今...
-
Access:フォームのデータの並び順
-
BCPでCSV内の文字列をテーブル...
-
アクセスの昇順並び替えで空白...
-
ACCESSの空白をカウントする
-
Microsoft Query の抽出条件に...
-
ACCESSのデータ型変更について
-
アクセスで月単位の抽出
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
日付型のフィールドに空白を入...
-
SQL文で パラメータが少なすぎ...
-
Excleピボットでデータのない部...
-
アクセスで月単位の抽出
-
BCPでCSV内の文字列をテーブル...
-
Accessの日付時刻型から日付、...
-
VBA 別シートの同じ日付の欄に...
-
Excel→Accessへの日付データの...
-
Access クエリで、レコードの無...
-
指定日付を起点にして最新日付...
-
アクセス:既定値に土日含まず...
-
【エクセル】指定した日付に一...
-
ACCESSの空白をカウントする
-
Accessで日付の比較がうまくい...
-
【vba】日付の形式が勝手に変わ...
-
前のレコードの合計に現レコー...
-
エクセル-過去6カ月分の合計を...
-
Accessのデータ型の日付/時刻型...
-
【Accessで困っています...
-
アクセス97のVBAで日付項目をヌ...
おすすめ情報