tagCANDY CGI VBレスキュー(花ちゃん) - VBレスキュー(花ちゃん)の投稿サンプル用掲示板 - Visual Basic 6.0 VB2005 VB2010
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ
VBレスキュー(花ちゃん)の投稿サンプル用掲示板
     サンプル投稿用掲示板  VB2005 〜 用トップページ  VB6.0 用 トップページ
複数のCSVファイルを1つのBook内の複数のSheet上に読込む(VB.NET) ( No.12 )  [親スレッドへ]
日時: 2012/06/06 19:05
名前: VBレスキュー(花ちゃん)

***********************************************************************************
* カテゴリー:[エクセル][][]                                                      *
* キーワード:Excel VBA,Excel2010,CSVファイル,複数の,全ての列を文字列型に,列数    *
***********************************************************************************
'===================================================================================================
'投 稿 日:2012.05.05
'投 稿 者:VBレスキュー(花ちゃん)
'タイトル:複数のCSVファイルを1つのBook内の複数のWorksheet上に読み込む
'========1=========2=========3=========4=========5=========6=========7=========8=========9=========0

Private Sub Button10_Click(sender As System.Object, e As System.EventArgs) Handles Button10.Click
   Call ExcelOpen("", "")     '新規ファイルをオープンして、Excel を起動
   '================ 複数のCSVファイルを1つのBookに読み込む ====================

   '-------------------- 下記のVB6.0用コードを移植 ---------------------------
   ' http://hanatyan.sakura.ne.jp/patio/read.cgi?mode=view2&f=128&no=12
   '--------------------------------------------------------------------------

   '保存するファイルは、各自ご用意下さい。
   Dim CSVFile(4) As String
   CSVFile(0) = System.IO.Path.GetFullPath("..\..\..\data\Chart3.csv")
   CSVFile(1) = System.IO.Path.GetFullPath("..\..\..\data\Chart4.csv")
   CSVFile(2) = System.IO.Path.GetFullPath("..\..\..\data\Chart5.csv")
   CSVFile(3) = System.IO.Path.GetFullPath("..\..\..\data\Chart6.csv")
   CSVFile(4) = System.IO.Path.GetFullPath("..\..\..\data\Chart7.csv")
   'Excel 2007 〜 は、列数の Max が 1,048,576 行、16,384 列
   '必要な場合は、変更して下さい。
   Dim AllTextFormat(255) As Integer
   Dim i As Integer
   For i = 0 To 255
      AllTextFormat(i) = 2    '全ての列を文字列型にする為の配列
   Next i

   Dim xlQueryTables As Excel.QueryTables = Nothing
   Dim xlQueryTable As Excel.QueryTable = Nothing
   Dim xlRange As Excel.Range = Nothing
   Dim xlSheet1 As Excel.Worksheet = Nothing
   For i = 0 To CSVFile.GetUpperBound(0)
      'ファイル数分シートがあるかを調査
      If xlSheets.Count >= i + 1 Then
         xlSheet1 = DirectCast(xlSheets.Item(i + 1), Excel.Worksheet)
      Else
         '無ければシートを追加
         xlSheet1 = DirectCast(xlSheets.Add, Excel.Worksheet)
      End If
      xlRange = xlSheet1.Range("A1")
      xlQueryTables = xlSheet1.QueryTables
      xlQueryTable = xlQueryTables.Add(Connection:="TEXT;" & CSVFile(i), Destination:=xlRange)

      With xlQueryTable
         .TextFilePlatform = 932    'Excel 2000 の場合は、xlWindows で
         .TextFileCommaDelimiter = True
         '全ての列をテキスト型に設定(無難なので)
         .TextFileColumnDataTypes = AllTextFormat
         .Refresh()
      End With
      MRComObject(xlQueryTable)
      MRComObject(xlQueryTables)
      MRComObject(xlRange)
      MRComObject(xlSheet1)

      '確認のために、1秒間表示しておく
      System.Threading.Thread.Sleep(1000)
   Next i

   'ファイルを保存するようにしましたので、確認して見て下さい。

   '=============================================================================
   'Excelファイルを上書き保存(True 又省略すれば)して終了処理を実行
   Call ExcelClose(IO.Path.GetFullPath(".\Test.xlsx"), True)  'False の場合保存しないで終了
   'Excel.EXE がタスクマネージャに残っていないか調査(実使用時は必要なし)
   Call ProcessCheck()
End Sub



 [スレッド一覧へ] [親スレッドへ]