
ネット上で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で質問しましょう!
似たような質問が見つかりました
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
- その他(プログラミング・Web制作) google formsを使ったタスク依頼フォーム作成におけるご相談 1 2023/06/22 15:55
- Outlook(アウトルック) 【 Windows 10 】アドレス帳に正しくインポートを完了させたい。 3 2023/04/23 13:41
- Excel(エクセル) CSVファイルがカンマ区切りにならない。対処法を教えていただきたいです。 仕事でSMS一斉送信ができ 2 2022/07/01 21:24
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- Visual Basic(VBA) ファイル名の右側を変更したい ファイル名:「1001日別売上」の左側へ「2022」を追加し、「202 6 2022/10/14 10:03
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- Visual Basic(VBA) 指定した文字から指定した文字のスペースまでを削除するVBAの構文について 6 2022/07/24 22:20
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- フリーソフト フォルダ、ファイル名の一括変換について 3 2023/03/16 09:23
このQ&Aを見た人はこんなQ&Aも見ています
-
Accessでdatファイルのインポート
その他(データベース)
-
datファイルをAccessでインポートする方法
その他(データベース)
-
datファイルをACCESSへのインポートについて
その他(データベース)
-
-
4
(Excelマクロ)datファイルをエクセルに読み込みたい
Excel(エクセル)
-
5
VBA シートのボタン名を変更したい
Visual Basic(VBA)
-
6
datファイルをcsvに変換したい
Word(ワード)
-
7
Accessで、1つの項目に複数の置換えを1度でするには?
Access(アクセス)
-
8
ダブルコーテーション付きでCSV出力
Visual Basic(VBA)
-
9
アクセスでテキストボックスの値が空白だったら
Access(アクセス)
-
10
アクセス データエクスポートの形式について(時刻の削除)
Access(アクセス)
-
11
Access 1レコードずつcsvで出力したい
その他(データベース)
-
12
ACCESSで400以上のフィールドがある場合の作成方法‥
その他(データベース)
-
13
ACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ
Access(アクセス)
-
14
サブフォームに対してGoToRecordするには?
その他(Microsoft Office)
-
15
アクセスのエラー「クエリには出力フィールドが1つ以上必要です。」
その他(Microsoft Office)
-
16
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
17
ラベルとテキストボックスのグループ化を解除したい
Access(アクセス)
-
18
access2021 強制終了してしまう
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【マクロ】列を折りたたみ非表...
-
Excel 2019 のピボットテーブル...
-
エクセルVBAで5行目からオート...
-
『iPod nano』英語→日本語に直...
-
エクセルグラフの凡例スペース
-
Access テキスト型に対する指定...
-
学校のパソコンの授業で「自分...
-
SELECT文でLEFT関数を使うと未...
-
access2000:フォームで入力し...
-
BIOSでAHCIに設定したいが、項...
-
Accessレポートで特定条件で改...
-
エクセルマクロにて最終行まで...
-
DTS クエリーデザイナ で更新ク...
-
jwwのクロスラインカーソルの角...
-
ビューでのデータエラー 「0で...
-
2ちゃんねるのリンクが開かない
-
ORACLE SQL 文末 文字列 削除の...
-
Latex 表の書き方について
-
エクセルで横スクロールをジャ...
-
BIOSでハードウェアの仮想化を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
エクセルVBAで5行目からオート...
-
Oracle 2つのDate型の値の差を...
-
エクセルグラフの凡例スペース
-
Access テキスト型に対する指定...
-
セルの右クリックで出る項目を...
-
SUBSTRING 関数に渡した長さの...
-
必須入力項目と入力必須項目
-
BIOSでAHCIに設定したいが、項...
-
Accessレポートで特定条件で改...
-
他テーブルで一致する列から名...
-
Accessで数値型にNULLをInsert...
-
ORACLEでLONG項目からCHAR項目...
-
datファイルからaccessにインポ...
-
access2000:フォームで入力し...
-
指定した項目の列削除
-
APN設定について教えていただけ...
-
VBAで複数の数式セルを最終行ま...
-
条件に一致した列の非表示の仕...
-
複数のレコードを1つのレコード...
おすすめ情報