トップ回答者
CSVファイルをEXCELへのインポートをVBでの制御

質問
回答
-
こんなかんじ
''' <summary>CSVファイルをExcelで開く</summary> ''' <param name="csvPath">CSVファイルのパス</param> ''' <returns>開いたファイルのパス</returns> Private Function OpenCsvExcel(ByVal csvPath As String) As String Dim xla As Object Dim wbs As Object xla = CreateObject("Excel.Application") xla.Visible = True wbs = xla.Workbooks Dim arrays As Object Dim arrayItems(1) As Object arrayItems(0) = New Object() {1, 9} 'Microsoft.Office.Interop.Excel.XlColumnDataType.xlSkipColumn = 9 arrayItems(1) = New Object() {2, 1} 'Microsoft.Office.Interop.Excel.XlColumnDataType.xlGeneralFormat = 1 arrays = arrayItems 'array = New Object() {New Object() {1, 9}, New Object() {2, 1}} 'これでもいい Dim filePath As String = csvPath If (String.Equals(System.IO.Path.GetExtension(csvPath), ".csv", StringComparison.OrdinalIgnoreCase)) Then '拡張子がCSVだとFieldInfoが使えないので一時ファイルにコピーして開く filePath = System.IO.Path.GetTempFileName() System.IO.File.Copy(csvPath, filePath, True) End If Try wbs.OpenText(filePath, FieldInfo:=arrays, Comma:=True, DataType:=1) 'Excel.XlTextParsingType.xlDelimited = 1 Finally System.Runtime.InteropServices.Marshal.ReleaseComObject(wbs) System.Runtime.InteropServices.Marshal.ReleaseComObject(xla) End Try Return filePath End Function
- 回答としてマーク 高橋 春樹 2009年7月31日 9:22
-
gekkaさん
いつもお世話になってます。
サンプルコードのご投稿、ありがとうございました。小耳朗さん
初めまして。MSDNフォーラムのご利用ありがとうございます。
gekkaさんからアドバイスを頂いたのですが、如何でしょうか?
実現したい機能はできましたか?(^-^)今回、gekkaさんから頂いた情報が、有用なものだと思いましたので、
回答マークを付けさせて頂きました。
まだ解決していない、もしくは不適切と思いましたら
回答マークを削除することも可能です。今後ともMSDNフォーラムをよろしくお願いします。
マイクロソフト株式会社 フォーラム オペレータ 高橋春樹- 回答としてマーク 小耳朗 2009年9月25日 10:45
すべての返信
-
こんなかんじ
''' <summary>CSVファイルをExcelで開く</summary> ''' <param name="csvPath">CSVファイルのパス</param> ''' <returns>開いたファイルのパス</returns> Private Function OpenCsvExcel(ByVal csvPath As String) As String Dim xla As Object Dim wbs As Object xla = CreateObject("Excel.Application") xla.Visible = True wbs = xla.Workbooks Dim arrays As Object Dim arrayItems(1) As Object arrayItems(0) = New Object() {1, 9} 'Microsoft.Office.Interop.Excel.XlColumnDataType.xlSkipColumn = 9 arrayItems(1) = New Object() {2, 1} 'Microsoft.Office.Interop.Excel.XlColumnDataType.xlGeneralFormat = 1 arrays = arrayItems 'array = New Object() {New Object() {1, 9}, New Object() {2, 1}} 'これでもいい Dim filePath As String = csvPath If (String.Equals(System.IO.Path.GetExtension(csvPath), ".csv", StringComparison.OrdinalIgnoreCase)) Then '拡張子がCSVだとFieldInfoが使えないので一時ファイルにコピーして開く filePath = System.IO.Path.GetTempFileName() System.IO.File.Copy(csvPath, filePath, True) End If Try wbs.OpenText(filePath, FieldInfo:=arrays, Comma:=True, DataType:=1) 'Excel.XlTextParsingType.xlDelimited = 1 Finally System.Runtime.InteropServices.Marshal.ReleaseComObject(wbs) System.Runtime.InteropServices.Marshal.ReleaseComObject(xla) End Try Return filePath End Function
- 回答としてマーク 高橋 春樹 2009年7月31日 9:22
-
gekkaさん
いつもお世話になってます。
サンプルコードのご投稿、ありがとうございました。小耳朗さん
初めまして。MSDNフォーラムのご利用ありがとうございます。
gekkaさんからアドバイスを頂いたのですが、如何でしょうか?
実現したい機能はできましたか?(^-^)今回、gekkaさんから頂いた情報が、有用なものだと思いましたので、
回答マークを付けさせて頂きました。
まだ解決していない、もしくは不適切と思いましたら
回答マークを削除することも可能です。今後ともMSDNフォーラムをよろしくお願いします。
マイクロソフト株式会社 フォーラム オペレータ 高橋春樹- 回答としてマーク 小耳朗 2009年9月25日 10:45