
ネット上でCGIにて処理されたファイル[.dat]を最終的にaccessのテーブルにインポートしたいのですが、極力自動化できればと思い質問しました。
datの中には個人ID、名前、電話番号、住所などがあります。
(1)accessのインポート機能ではdatから直接取り込めない。
手動でテキストファイルに変換して、インポートを試みましたが、さらに問題が・・・
(2)区切り文字が<>と2文字になっているので、インポート時の処理(区切り文字の指定)では1文字しか指定できない。
”12345<>たなか<>たろう<>0123-45-6789” ←例
やりたい事は、datからテキストやcsvに変換する処理の自動化。
その中で、区切り文字の変換(テキストエディタの機能を使って、2文字から1文字に変換する事はできました)
理想は1日1回程度、定時に自動で更新する事。
もしくはワンクリックですべての処理を行う事です。
他サイトでも同様の質問をしたのですが、レスがつかず・・・
無茶なことなのかもしれませんが、ご意見いただければ幸いです。
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
datファイルが単なるtextファイルだったら拡張子をcsvに変えるだけでOKです。
"<>"の変換は文字列としてdatファイルを読み込んだ後、replace関数で変換しては?
拡張子変更はScriptiing.FileSystemを使えばOKです。
VBAで作り込めればワンクリックでOKですし、VBSで作り込めればWindowsのタスクに
登録することにより、完全自動が可能かと思います。
回答ありがとうございます。
datの中身はtextです。
replace関数の存在自体を知りませんでした・・・(これは使えそうです♪)
>拡張子変更はScriptiing.FileSystemを使えばOKです。
→初めて聞く言葉です。その時点で扱えそうにもないんですが、どういったものなんでしょうか?
VBAもほとんどわからない初心者なので、現状では望んでいるものは難しそうです。でも「不可能では無い」という事だけでもわかってよかったです。
現段階の知識で出来る限り、作業を簡略化してみようと思います。
No.3
- 回答日時:
こんばんは。
ちょっと気になっていたのですが、
>datの中身はtextです。
おそらくは、バイナリ・インポートを考慮したものではなかったでしょうか?
今、別の言語のサイトを読んでみて、やっと納得したのですが、Dat 拡張子は、テキストでも、バイナリでもインポートできるためのようなことが書いてありました。
VBAでは、通常、ランダムアクセスでインポートするような記憶がありましたが、ランダムアクセスは、そのデータ型を決めなくてはなりませんので、以下のようなスタイルよりも、難しくなります。
もし、直接インポートするなら、VBAのInput ステートメントを使って、以下のようにして、それを、テーブルに振り分けてあげればよいです。ただし、この場合は、動的配列ではありませんから、最終行は、配列の添え字の最大値が、-1 になります。それでもって、最終行の判定をします。もし、こういうことが難しいようでしたら、Vector から、データベース用の切り分けエディタを入手したほうが早いです。
Sub Test1()
Dim FileName As String
Dim FileNo As Integer
Dim TextLine As String
Dim buf(1000) As Variant
Dim i As Integer
FileName = "test1.dat" 'ファイル名
FileNo = FreeFile()
Open FileName For Input As #FileNo
Do While Not EOF(FileNo)
Line Input #FileNo, TextLine
buf(i) = Split(TextLine, "<>")
i = i + 1
Loop
Close #FileNo
'続く
End Sub
回答ありがとうございます。
正直VBAを含め、わからない事だらけです。
まだまだ勉強が必要みたいですね。
一つの質問でいろんな事を勉強するきっかけになりました。
ありがとうございました。
No.1
- 回答日時:
"<"は区切り文字以外でデータの中に入っている可能性はありますか?
データの中に混入していないなら、一旦"<"で区切ってアクセスにインポートした後、2番目以降の項目の頭1桁を削除してはどうですか?
”12345<>たなか<>たろう<>0123-45-6789” ←例
↓"<"で区切ってアクセスにインポート
項目1 項目2 項目3 項目4
+-----+-------+-------+-------------+
|12345|>たなか|>たろう|>0123-45-6789|
+-----+-------+-------+-------------+
↓"<"で区切ってアクセスにインポート
update テーブル
set 項目2 = right(項目2,len(項目2)-1)
, 項目3 = right(項目3,len(項目3)-1)
, 項目4 = right(項目4,len(項目4)-1)
;
項目1 項目2 項目3 項目4
+-----+------+------+------------+
|12345|たなか|たろう|0123-45-6789|
+-----+------+------+------------+
この回答への補足
質問に答えてませんでした・・・
<>は区切り以外では使用しておりません。ただ顧客データ+利用履歴として顧客データ部分(前半)が<>
履歴部分(後半)が<->となってるので、そこも処理する必要はありそうなのですが、元々必要ない部分なので今の所は特に問題ないです。
回答ありがとうございます。
これなら区切り文字の変換とインポートはうまくいきそうですね。
(実際の自動化の方法はまだよくわかってないのですが・・・)
もうひとつの問題点。accessではdatファイルから直接インポートは出来ないようなので、テキストやcsvなどへ変換する処理方法はないものでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
Accessでdatファイルのインポート
その他(データベース)
-
datファイルをAccessでインポートする方法
その他(データベース)
-
(Excelマクロ)datファイルをエクセルに読み込みたい
Excel(エクセル)
-
-
4
datファイルをcsvに変換したい
Word(ワード)
-
5
datファイルをACCESSへのインポートについて
その他(データベース)
-
6
ダブルコーテーション付きでCSV出力
Visual Basic(VBA)
-
7
アクセスでテキストボックスの値が空白だったら
Access(アクセス)
-
8
AccessのFormの設定で、開いた時に必ず最大化で表示する方法が分からず困っています
Access(アクセス)
-
9
Accessで、1つの項目に複数の置換えを1度でするには?
Access(アクセス)
-
10
アクセスのエラー「クエリには出力フィールドが1つ以上必要です。」
その他(Microsoft Office)
-
11
ACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ
Access(アクセス)
-
12
Returnに対するGoSubがありません
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
Accessレポートで特定条件で改...
-
エクセルVBAで5行目からオート...
-
Oracle 2つのDate型の値の差を...
-
ORACLEでLONG項目からCHAR項目...
-
エクセルグラフの凡例スペース
-
他テーブルで一致する列から名...
-
VBAで複数の数式セルを最終行ま...
-
ワードで4段組みで文章を書い...
-
ビューでのデータエラー 「0で...
-
access2000:フォームで入力し...
-
Access テキスト型に対する指定...
-
セルの右クリックで出る項目を...
-
SUBSTRING 関数に渡した長さの...
-
必須入力項目と入力必須項目
-
ピボットテーブルでフィルター...
-
2行目を表示できますか?
-
ORACLE SQL 文末 文字列 削除の...
-
【マクロ】列を折りたたみ非表...
-
SymfoWareでトリガの作成
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【マクロ】列を折りたたみ非表...
-
Excel 2019 のピボットテーブル...
-
エクセルVBAで5行目からオート...
-
Oracle 2つのDate型の値の差を...
-
Access テキスト型に対する指定...
-
ワードで4段組みで文章を書い...
-
エクセルグラフの凡例スペース
-
access2000:フォームで入力し...
-
ORACLEでLONG項目からCHAR項目...
-
アリエクで買った商品が破損し...
-
SUBSTRING 関数に渡した長さの...
-
必須入力項目と入力必須項目
-
他テーブルで一致する列から名...
-
空白をそのままインポートする...
-
セルの右クリックで出る項目を...
-
VBAで複数の数式セルを最終行ま...
-
複数のレコードを1つのレコード...
-
SQL*Loaderでのゼロ埋め
-
指定した項目の列削除
-
Accessレポートで特定条件で改...
おすすめ情報