- 日時: 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
|