ネット上で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も見ています
-
【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
ロボットの住む世界で流行ってる罰ゲームとは?
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
Accessでdatファイルのインポート
その他(データベース)
-
datファイルをAccessでインポートする方法
その他(データベース)
-
datファイルをACCESSへのインポートについて
その他(データベース)
-
-
4
ACCESS VBAでインポート定義の場所
Access(アクセス)
-
5
アクセスでテキストボックスの値が空白だったら
Access(アクセス)
-
6
ACCESS で 項目名を出力せずにエクスポートしたい
その他(データベース)
-
7
エクセルからアクセスにインポートすると、エラーが出てしまいます。原因を教えていただけませんか。
Access(アクセス)
-
8
Accessのフィールド数が255しかない=業務では使えない?
PowerPoint(パワーポイント)
-
9
【Access】クエリで抽出したデータをCSV形式でエクスポートできますか?
Access(アクセス)
-
10
INSERT INTO ステートメントに認識できないフィールド
その他(データベース)
-
11
Accessのデータの一部を削除する方法
その他(データベース)
-
12
Accessでブレークポイントを設定してないのに一時停止してしまう
その他(データベース)
-
13
フォームを開くときに、コンボボックスの値を選択(アクセスVBA)
Visual Basic(VBA)
-
14
VBAの実行時エラー'2522'について
Access(アクセス)
-
15
Accessで、1つの項目に複数の置換えを1度でするには?
Access(アクセス)
-
16
アクセスで#エラーを表示させない方法は?
Access(アクセス)
-
17
Access 複数フォームを開き、画面の最上面にしたいフォームをコント
その他(データベース)
-
18
アクセスクエリ(複数)→マクロ→エクセル出力(ワークシート別)
その他(パソコン・スマホ・電化製品)
-
19
ACCESSのデータに自動で半角スペースを入れたい
その他(データベース)
-
20
アクセスでのテキストデータ取り込みについて
その他(データベース)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
複数のレコードを1つのレコード...
-
空白をそのままインポートする...
-
APN設定について教えていただけ...
-
必須入力項目と入力必須項目
-
Joy To Keyのマウスやキーボー...
-
datファイルからaccessにインポ...
-
2行目を表示できますか?
-
エクセルVBAで5行目からオート...
-
エクセル2003で四角の中に...
-
VBAで複数の数式セルを最終行ま...
-
指定した項目の列削除
-
条件に一致した列の非表示の仕...
-
エクセルグラフの凡例スペース
-
セルの右クリックで出る項目を...
-
ANDの順番とGROUP BYについて
-
アンドロイド おサイフケータイ...
-
BIOSでAHCIに設定したいが、項...
-
「直需」の意味を教えてください
-
Accessでテーブル名やクエリ名...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
エクセルVBAで5行目からオート...
-
セルの右クリックで出る項目を...
-
Access テキスト型に対する指定...
-
Oracle 2つのDate型の値の差を...
-
SUBSTRING 関数に渡した長さの...
-
必須入力項目と入力必須項目
-
APN設定について教えていただけ...
-
エクセルグラフの凡例スペース
-
VBAで複数の数式セルを最終行ま...
-
空白をそのままインポートする...
-
BIOSでAHCIに設定したいが、項...
-
アンドロイド おサイフケータイ...
-
Accessで数値型にNULLをInsert...
-
複数のレコードを1つのレコード...
-
ORACLEでLONG項目からCHAR項目...
-
SELECT文でLEFT関数を使うと未...
-
Access又はExcelで256項目を超...
-
Accessレポートで特定条件で改...
-
2行目を表示できますか?
おすすめ情報