Excel上にCSVファイル等を読込
                                                         玄関へお回り下さい。
Excel上にCSV及びTXTファイルをデータ型を指定して読込む     (251)
動作確認 : WindowsXP(SP2) VB6.0(SP6) / Excel 2000 Excel 2002 Excel 2007
まず、VBからExcel及びWordを操作する時の注意事項を見て下さい
そして Form に CommandButtonを2個貼り付けて test.csv とtest.prn のファイルを準備しておいて下さい。 
  Option Explicit  
Private Sub Command1_Click()
'★プロジェクト→参照設定でMicrosoft Excel *.* ObjectLibraryに
' チェックを入れておいて下さい。
'==================================================================
'Excel の起動処理
  '基本的な設定は[VBからエクセルを操作する]を参照して下さい。
  Dim xlApp    As Excel.Application
  Dim xlBooks   As Excel.Workbooks
  Dim xlBook   As Excel.Workbook
  Dim xlSheet   As Excel.Worksheet
  Set xlApp = New Excel.Application
  Set xlBooks = xlApp.Workbooks '転載禁止
'------------------------------------------------------
'使用するファイルの準備
  '拡張子を変更してCSVファイルをコピー
  FileCopy "..\test.csv", xlFilePath() ' \VBRescu1\test251.txt を作成
'------------------------------------------------------
'各列のデータに合ったデータ型を指定して読み込み
  xlBooks.OpenText FileName:=xlFilePath(), _
    DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
    Comma:=True, FieldInfo:=Array( _
    Array(1, xlTextFormat), _
    Array(2, xlTextFormat), _
    Array(3, xlTextFormat), _
    Array(4, xlTextFormat), _
    Array(5, xlYMDFormat), _
    Array(6, xlGeneralFormat), _
    Array(7, xlGeneralFormat), _
    Array(8, xlGeneralFormat))
   'Array(列番号, データ型) '転載禁止
   
'データ型  xlGeneralFormat  1 一般
   
'      xlTextFormat   2 テキスト
   
'      xlYMDFormat    5 YMD (年月日) 形式の日付

'------------------------------------------------------
'オープンしたファイルの操作
  Set xlBook = xlBooks(1)  'ファイル名での指定もOK
  Set xlSheet = xlBook.Worksheets(1) 'シート名でもOK
  xlSheet.Cells.Select        '転載禁止
  xlSheet.Cells.EntireColumn.AutoFit '入力データの幅にセルの幅を広げる
  xlSheet.Range("A1").Select     'ホームポジションに移動
  xlApp.Visible = True  '転載禁止      'Excelを表示
'==================================================================
'下記コードはこのサンプルとは直接、関係ありません。
'動作確認の為に Excel を7秒間表示して置く為のものです。
  Dim lngSt As Long
  lngSt = Timer
  Do While Timer - lngSt < 7
   DoEvents
  Loop
'==================================================================
'終了処理
  '保存時の問合せを非表示に設定
  xlApp.DisplayAlerts = False
  Set xlSheet = Nothing
  xlBook.Close
  Set xlBook = Nothing
  xlBooks.Close
  Set xlBooks = Nothing
  xlApp.Quit
  Set xlApp = Nothing
End Sub

 CSVファイルの拡張子のまま読込むとExcelとの関連付けがしてある為に、自動的にExcel形
 式で読込まれ 0101 等は 日付として読込まれ自動的に変更されてしまう、それを防ぐには
 拡張子を変更して、各列のデータに合ったデータ型を指定して読込む必要があります。
 詳しくは、ヘルプで OpenText を調べて下さい。又、マクロ取って見れば解ると思います。
 
   Private Sub Command2_Click()
'★プロジェクト→参照設定でMicrosoft Excel *.* ObjectLibraryに
' チェックを入れておいて下さい。
'==================================================================
'Excel の起動処理
  '基本的な設定は[VBからエクセルを操作する]を参照して下さい。
  Dim xlApp  As Excel.Application
  Dim xlBooks As Excel.Workbooks
  Dim xlBook  As Excel.Workbook
  Dim xlSheet As Excel.Worksheet
  Dim FilePath As String '転載禁止
  Set xlApp = New Excel.Application
  Set xlBooks = xlApp.Workbooks
'------------------------------------------------------
'テキストファイル(スペース区切り)の読込
  FilePath = CreateObject("Scripting.FileSystemObject" _
             ).GetAbsolutePathName("..\test.prn")
  '区切り位置を指定及びデータ型を指定して読み込み転載禁止
  xlBooks.OpenText FileName:=FilePath, DataType:=xlFixedWidth, _
    FieldInfo:=Array( _
    Array(0, xlTextFormat), _
    Array(10, xlTextFormat), _
    Array(20, xlTextFormat), _
    Array(30, xlTextFormat), _
    Array(40, xlYMDFormat), _
    Array(50, xlGeneralFormat), _
    Array(60, xlGeneralFormat), _
    Array(70, xlGeneralFormat), _
    Array(80, xlGeneralFormat)) '転載禁止
'------------------------------------------------------
'オープンしたファイルの操作
  Set xlBook = xlBooks(1)
  Set xlSheet = xlBook.Worksheets(1)
  xlSheet.Cells.Select '転載禁止
  xlSheet.Cells.EntireColumn.AutoFit '入力データの幅にセルの幅を広げる
  xlSheet.Range("A1").Select     'ホームポジションに移動
  xlApp.Visible = True        'Excelを表示
'==================================================================
'下記コードはこのサンプルとは直接、関係ありません。
'動作確認の為に Excel を7秒間表示して置く為のものです。
  Dim lngSt As Long
  lngSt = Timer
  Do While Timer - lngSt < 7
   DoEvents
  Loop
'==================================================================
'終了処理
  '保存時の問合せを非表示に設定
  xlApp.DisplayAlerts = False
  xlApp.Quit '転載禁止
  Set xlSheet = Nothing
  xlBook.Close
  Set xlBook = Nothing
  xlBooks.Close
  Set xlBooks = Nothing
  xlApp.Quit
  Set xlApp = Nothing
End Sub

 スペース区切りの場合、そのデータに合った区切り位置を指定してやる必要があります。
 詳しくは、ヘルプで OpenText を調べて下さい。又、マクロ取って見れば解ると思います。
ご使用される場合はご自分のご利用の環境(ファイル)に合わせて、設定を変更して下さい。
又、サンプル No.393 のように、QueryTables コレクションオブジェクト を使った方法でもできます。


2003/03/08
2006/12/18


VBレスキュー(花ちゃん)
Visual Basic6.0  VB6.0