tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトルエクセルデータが取込めない
記事No15878
投稿日: 2014/04/01(Tue) 14:07
投稿者銭形
VBからエクセルのデータを取込みたいのですが、うまく取込めません。
あるエクセルファイル(XLS)を開いた状態だとうまく取り込めるの
ですが、ファイルを選択して取り込もうとすると、外部テーブルの
フォーマットが正しくありません。とエラーが出てしまいます。
どうしたらうまく取込めるでしょうか?
ちなみに、エクセルファイルを開くと、セキュリティ警告が出ます
(マクロが無効にされました)と表示されます。

(環境:Windows7 VB6.0(SP6) Excel2010)

Dim DB As DAO.Database
Dim rs As DAO.Recordset
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Open("D:\BOOK.xls")
Set xlSheet = xlBook.Worksheets(1)
Set DB = OpenDatabase(xlFileName, False, False, "Excel 8.0;HDR=NO;IMEX=1")
 ※この行でエラーになってしまいます。
すみませんが、アドバイスのほど、よろしくお願いいたします。

[ツリー表示へ]
タイトルRe: エクセルデータが取込めない
記事No15879
投稿日: 2014/04/02(Wed) 10:37
投稿者YK
こんにちは。

コードからではなにをしたいのかわからないの
りあえずエクセルのデータを ADODB の Recordset に格納します。
Excel2003以前 と Excel2007以降ではProviderが違います。
変数の内容また未定義の変数がありますが、確認して下さい。

Sub TESTab()
    Dim cn      As ADODB.Connection
    Dim rs      As ADODB.Recordset
    Dim strSQL  As String
    Dim strXls  As String
    Dim i       As Long
    
    strXls = "D:\Excel\test.xlsx"
    
    strSQL = "SELECT * FROM [Sheet1$]"
    
    Set cn = New ADODB.Connection
    With cn
'        .Provider = "Microsoft.Jet.OLEDB.4.0"
'        .Provider = "Microsoft.ACE.OLEDB.12.0"
        .Provider = IIf(Len(strXls) - InStrRev(strXls, ".") = 4, _
                    "Microsoft.ACE.OLEDB.12.0", "Microsoft.Jet.OLEDB.4.0")
        .Properties("Data Source").Value = strXls
        .Properties("Extended Properties").Value = "Excel 8.0;HDR=YES;"
        .Open
    End With
    Set rs = New ADODB.Recordset
    Set rs = cn.Execute(strSQL)
    
    With xlBook.Worksheets(1)
        .Range("A11").CurrentRegion.Clear
        For i = 0 To rs.Fields.Count - 1
            .Cells(11, i + 1).Value = rs.Fields(i).Name
        Next
        .Range("A12").CopyFromRecordset rs
    End With
    rs.Close
    cn.Close
    Set rs = Nothing
    Set cn = Nothing
End Sub

[ツリー表示へ]
タイトルRe^2: エクセルデータが取込めない
記事No15880
投稿日: 2014/04/02(Wed) 14:35
投稿者銭形
YKさん、回答ありがとうございます。

うまく説明出来ないのですが、VBでコマンドボタンを押したら
ファイル選択画面が表示され、そのエクセルのデータを別のエクセル
に取込みたいのです。(一部加工して取り込みます)
一応プログラムを作って実行してみたものの、エラーが出てしまいました。
たまたま、取り込みたいエクセルデータを開いた状態で実行したら
取込めたので、なぜかと思い、質問させて頂いた次第です。
ちなみに取り込みたいエクセルは、Excel2010です。

YKさんのアドバイスを基にプログラムを作ってみたいと思います。
説明不足で分かりにくいところ、ご協力していただき、
誠にありがとうございました。

[ツリー表示へ]