タイトル : Re^2: EXCEL2003ファイルをMDBファイルへのインストール方法 投稿日 : 2015/07/28(Tue) 17:34 投稿者 : 魔界の仮面弁士
> strConnect = "[Excel 8.0;database=" & Direc_Name & "\" & File_Name & "].[" & ImpSheet_Name & "]" IMEX 指定抜きで大丈夫ですか? それはさておき、生成される文字列が、 [Excel 8.0;database=C:\folder\file.xls].[Sheet2] なのだとしたら、それを [Excel 8.0;database=C:\folder\file.xls].[Sheet2$] という表記に変更してみて下さい。また、出力範囲が分かっている場合は [Excel 8.0;database=C:\folder\file.xls].[Sheet2$B3:AK48] のように指定することもできます。 > > 2つ目以降はシートオブジェクトが存在しないためインポートできない状態です。 質問の意図が良く分かりませんが、存在するシートしか指定できません。 どんなシートがあるか分からないのであれば、Excel オートメーションで Worksheets コレクションを列挙するか、もしくは GetOleDbSchemaTable で OleDbSchemaGuid.Tables を問い合わせましょう。 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click ListBox1.DataSource = GetExcelSheets("C:\TEMP\test.xls") End Sub Private Function GetExcelSheets(ByVal xlsPath As String) As List(Of String) Dim cb As New OleDbConnectionStringBuilder() If IntPtr.Size = 8 Then '64bit環境では JET が使えないので、ACE Provider で代用 cb.Provider = "Microsoft.ACE.OLEDB.12.0" Else '32bit環境では JET Provider を利用(ACE でも可) cb.Provider = "Microsoft.JET.OLEDB.4.0" End If 'xls 形式の場合は JET プロバイダでも OK ですが、 'xlsx 形式を扱う場合は、ACE プロバイダが必要です cb.DataSource = xlsPath cb("Extended Properties") = "Excel 8.0;ISAM=1;HDR=NO" Using conn As New OleDbConnection(cb.ConnectionString) conn.Open() Dim tbl As DataTable = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, Nothing) conn.Close() Return (From r In tbl Select r.Field(Of String)("TABLE_NAME")).ToList() End Using End Function |