| 日時: 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
 
 
 
 |