Access (VBA)

Access VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : Access 2016)
VBAによる固定長CSVファイル取込方法について
投稿日時: 21/02/18 11:12:01
投稿者: myzkktht

いつもお世話になっております。
CSVファイルの勤怠データの取込を行っておりますが、カンマ区切りは
DoCmd.TransferText acImportDelimにてフィールドごとに取込ができますが、
下記のデータを
00012345山田 一太郎 202101010900180012001300
 
社員番号 氏名     日付   出社 退社 休憩 戻り
00012345 山田 一太郎 20210101 0900 1800 1200 1300
 
上記のような分け方ができずに困っています。※フィールド名がありません。
Type tEmplyee ' Number As Stringといった形になると思うのですが、
自分も含めた初心者が使うので、ウィザードではなく、VBAボタンで
取り込みができればと考えております。
 
恐れ入りますがご教授のほど、よろしくお願いします。

回答
投稿日時: 21/02/18 14:12:23
投稿者: Suzu

VBAの前に、「手動」でインポートをしてみましょう。
念のため、テーブルをコピーし、バックアップを取ってから操作してください。
 
 
1.「外部データ」-「インポートとリンク」-「テキストファイル」で
 「外部データの取り込み - テキストファイル」が表示されます。
 
2.ファイル名に 取り込みたいテキストファイルを指定
 レコードのコピーを次のテーブルに追加する で、 対象のテーブルを選択 し OK
 テキスト インポートウィザード が表示されます。
 
3.【固定長 - フィールドの長さが固定されている】を選択し、次へ
 テキストファイルの内容が表示されますので、操作方法に従い区切り位置を線を入れ
 「設定」を押します。
 
4.「 [テキストファイル名] インポート定義」 が表示されますので
   フィールドの情報を確認してください。 (特に開始位置と、幅)
 確認終えたら、保存を押し、 定義名 に 名前を設定し、「OK」
  ※既定ですと、定義名は、[ファイル名]␣インポート定義 の様に、半角スペースが入りますので
      出来たら、半角スペースは消すなり、_ に置き換えるのをお勧めします。
 
5.「 [テキストファイル名] インポート定義」 に戻りますので、
 4. にて、設定した 定義名があるか。
  定義名を選択し、内容が保存されているかを確認し OK を押し その画面も閉じます。
 
5.テキストインポートウィザードに戻りますので 次へ
 インポート先のテーブル名を確認し 完了
 インポート操作の保存 と出ますので、閉じる
 
6.インポート先のテーブルを開き、データが追加されているか確認します。
 
あとは、固定長ファイルをインポートする
 
DoCmd.TransferText acImportFixed で
SpecificationName に 4. で定義したインポート定義名を指定します。
 
 
 

引用:
Type tEmplyee ' Number As Stringといった形になると思うのですが、

意味が判りません。

回答
投稿日時: 21/02/18 14:18:30
投稿者: Suzu

Suzu さんの引用:

引用:
Type tEmplyee ' Number As Stringといった形になると思うのですが、

意味が判りません。

 
あっ、ユーザー定義型の構造体を使う方法の事か。。。
Docmd.TransferText で済むのであればそれで充分かと。

投稿日時: 21/02/18 17:14:06
投稿者: myzkktht

ありがとうございます。無事にイメージ通りに作成することができました。
この度は本当に助かりました。
改めてお礼申し上げます。
 

Suzu さんの引用:
VBAの前に、「手動」でインポートをしてみましょう。
念のため、テーブルをコピーし、バックアップを取ってから操作してください。
 
 
1.「外部データ」-「インポートとリンク」-「テキストファイル」で
 「外部データの取り込み - テキストファイル」が表示されます。
 
2.ファイル名に 取り込みたいテキストファイルを指定
 レコードのコピーを次のテーブルに追加する で、 対象のテーブルを選択 し OK
 テキスト インポートウィザード が表示されます。
 
3.【固定長 - フィールドの長さが固定されている】を選択し、次へ
 テキストファイルの内容が表示されますので、操作方法に従い区切り位置を線を入れ
 「設定」を押します。
 
4.「 [テキストファイル名] インポート定義」 が表示されますので
   フィールドの情報を確認してください。 (特に開始位置と、幅)
 確認終えたら、保存を押し、 定義名 に 名前を設定し、「OK」
  ※既定ですと、定義名は、[ファイル名]␣インポート定義 の様に、半角スペースが入りますので
      出来たら、半角スペースは消すなり、_ に置き換えるのをお勧めします。
 
5.「 [テキストファイル名] インポート定義」 に戻りますので、
 4. にて、設定した 定義名があるか。
  定義名を選択し、内容が保存されているかを確認し OK を押し その画面も閉じます。
 
5.テキストインポートウィザードに戻りますので 次へ
 インポート先のテーブル名を確認し 完了
 インポート操作の保存 と出ますので、閉じる
 
6.インポート先のテーブルを開き、データが追加されているか確認します。
 
あとは、固定長ファイルをインポートする
 
DoCmd.TransferText acImportFixed で
SpecificationName に 4. で定義したインポート定義名を指定します。
 
 
 
引用:
Type tEmplyee ' Number As Stringといった形になると思うのですが、

意味が判りません。