tagCANDY CGI VBレスキュー(花ちゃん) - VBレスキュー(花ちゃん)の投稿サンプル用掲示板 - Visual Basic 6.0 VB2005 VB2010
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ
VBレスキュー(花ちゃん)の投稿サンプル用掲示板
     サンプル投稿用掲示板  VB2005 〜 用トップページ  VB6.0 用 トップページ
複数のCSVファイルを一つのブックの複数シートに入力(VB6.0 応用編) ( No.1 )  [親スレッドへ]
日時: 2009/12/27 17:00
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[エクセル][][]                                                      *
* キーワード:CSV,ADO,Jet用OLE DB Provider,                                       *
***********************************************************************************

元質問:VB6.0からEXCEL97へのデータ入力で.. - tokumori  2002/11/07-19:23 No.1293

上記環境にて、別のプログラムで作成した複数CSVファイルを一つのブックの複数シートに入力しようと考えています。
(A.csv→sheet1へ、B.csv→sheet2へという具合に)
VBからエクセルを起動して、シートごとにデータを入力開始するところまでは出来たのですが、データ数の合計が30000を超えた辺りでエクセルがフリーズしてしまいます。(Win95およびWin98でテスト)
正確なデータ数は数えていませんが、フリーズするポイントは毎回同じです。

-----------------------------------------------------------------------------------
Re: VB6.0からEXCEL97へのデータ入力でのエ.. - 魔界の仮面弁士 2002/11/07-21:27 No.1295
-----------------------------------------------------------------------------------
> 上記環境にて、別のプログラムで作成した複数CSVファイルを
> 一つのブックの複数シートに入力しようと考えています。

ADOと、Jet用OLE DB Provider 4.0を使って作成する方法もあります。
(この方法だとは、Excelがインストールされていない環境でも作成できます)

Option Explicit

Private Sub Form_Load()
    Dim strWorkName As String
    Dim strCSVFolder As String
    Dim strCSVName As String
    Dim strExcelFileFullPath As String
    Dim Cn As ADODB.Connection
    Dim SQL As String

    strCSVFolder = "C:\USER\"
    strWorkName = "~tmpVB.dat"
    strExcelFileFullPath = "C:\USER\Excel.xls"

    If Dir(strExcelFileFullPath) <> "" Then
        Kill strExcelFileFullPath
    End If
    With CreateObject("ADOX.Catalog")
        .Create "Provider=Microsoft.Jet.OLEDB.4.0;" _
            & "Data Source=" & strCSVFolder & strWorkName
    End With

    Set Cn = New ADODB.Connection
    Cn.Provider = "Microsoft.Jet.OLEDB.4.0"
    Cn.Open strCSVFolder & strWorkName

    strCSVName = Dir(strCSVFolder & "*.csv")
    Do Until strCSVName = ""
        SQL = "SELECT * INTO ["
        SQL = SQL & "Excel 8.0;Database=" & strExcelFileFullPath
        SQL = SQL & "].["
        SQL = SQL & Replace(strCSVName, ".", "_")
        SQL = SQL & "] FROM ["
        SQL = SQL & "text;HDR=NO;FMT=Delmited;Database=" & strCSVFolder
        SQL = SQL & "].[" & strCSVName & "]"

        Cn.Execute SQL

        strCSVName = Dir()
    Loop
    Cn.Close
    Set Cn = Nothing
End Sub




 [スレッド一覧へ] [親スレッドへ]