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