Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


6172 / 9994 ←次へ | 前へ→

【7030】Re:テキストデータをインポートする時に
発言  小僧  - 05/12/31(土) 9:42 -

引用なし
パスワード
   ▼NT さん:
おはようございます。

色々やり方はあると思われますが、

1) 取り込み前に加工
2) 加工しながらテーブルに取り込み
3) 取り込みした後に加工

のどれでも VBA で可能だと思われます。

以下は 3) の方法のサンプルコードです。

Sub テーブル名を変更()
'要参照DAO x.x Object Library
Dim FName As String     '対象テキストファイルのフルパス
Dim TName As String     '取り込み先のテーブル名
Dim DB As DAO.Database
Dim TDF As DAO.TableDef
Dim F As DAO.Field
Dim i As Long

  FName = "C:\Temp.txt"
  TName = "T_Test"
  
  If DCount("*", "MSysObjects", "Name = '" & TName & "'") > 0 Then _
    DoCmd.DeleteObject acTable, TName
  
  DoCmd.TransferText acImportDelim, "", TName, FName, True
  
  Set DB = CurrentDb
  Set TDF = DB.TableDefs(TName)

  i = 1
    For Each F In TDF.Fields
      If Not (F.Name = "品番" Or F.Name = "品名") Then
        F.Name = "日付" & i
        i = i + 1
      End If
    Next

  Set TDF = Nothing
  Set DB = Nothing
End Sub

コードは提示させて頂きましたが、

>1行目:品番,品名,日付1(例:1/5),日付2(例1/6),日付3(例1/8)...←フィールド名
>2行目:A  , ギア, 200    ,300      ,100      
>3行目:B  , ボルト,250    ,200      ,50

このようなテーブルを持つと後々苦労されると思いますよ。
(Excel ですとこのような値の持ち方で良いのですが…。)

T_出荷
SEQ 品番 日付    値
1  A  2005/01/05 200
2  A  2005/01/06 300
3  A  2005/01/08 100
4  B  2005/01/05 250
5  B  2005/01/06 200
6  B  2005/01/08  50

T_品名マスタ
品番 品名
A  ギア
B  ボルト

上記は一例ですが、テーブルの正規化をする事によって
今後のメンテナンスが楽になると思われます。

414 hits

【7027】テキストデータをインポートする時に NT 05/12/28(水) 14:40 質問
【7028】Re:テキストデータをインポートする時に Gin_II 05/12/28(水) 16:02 回答
【7029】Re:テキストデータをインポートする時に NT 05/12/28(水) 16:55 質問
【7030】Re:テキストデータをインポートする時に 小僧 05/12/31(土) 9:42 発言

6172 / 9994 ←次へ | 前へ→
ページ:  ┃  記事番号:
1078229
(SS)C-BOARD v3.8 is Free