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 コレクションオブジェクト を使った方法でもできます。 |