tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル 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

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。