DOBON.NET DOBON.NETプログラミング掲示板過去ログ

プログラムでエクセルにアクセスへの参照を追加するには

環境/言語:[環境(winndowsXP)]
分類:[.NET]

はじめて投稿させていただきます。
いつも DOBON.NET .NET Tips拝見させて頂き 大変参考にさせて頂いております。

初めての質問なのですが ひとつのエクセルのデータをアクセスに送るプログラム
なのですが 直接エクセルからデータを取り込みアクセスに送ると簡単なのですがネットワークを経由する為か 非常に時間が掛かります(6万行程のデータ)
そこで エクセルのマクロを使い同じ事をさせると大変短時間で同じ作業が完了することがわかり プログラムから新しいエクセルを起動させ そのエクセルにマクロを書込み実行させるプログラムを作ってみました
ところが プログラムからエクセルのマクロに参照を追加するコードが分かりません
参照を追加したエクセルを起動させると問題ないのですが面白くないので どうかご教授願えませんでしょうか。
下記のようなコードを動かせるようにしたいのです
Dim xl As Excel.Application
Dim book As Excel.Workbook
Dim oModule As VBIDE.VBComponent
Dim sCode As String

'***新しいエクセル見せずに起動**************************
xl = New Excel.Application
book = xl.Workbooks.Add

  sCode = "Sub マクロ() " & vbCr & _
"Dim cn As Connection " & vbCr & _
"Dim rs As Recordset " & vbCr & _
"Dim myRange As Range " & vbCr & _
"Dim myLastRow " & vbCr & _
"Dim myCell As Range " & vbCr & _
"Dim myID " & vbCr & _
"Dim myNaiyou " & vbCr & _
"Dim myKuremuSheet As Worksheet " & vbCr & _
"Dim myNono " & vbCr & _
"Dim myCoun " & vbCr & _
"Dim myWari " & vbCr & _
" " & vbCr & _
" Set myKuremuSheet = Application.Workbooks(""住所録.xls"").Worksheets(""住所録"") " & vbCr & _
" With myKuremuSheet " & vbCr & _
" Set myRange = Range(.Range(""A2""), .Range(""A65536"").End(xlUp)) " & vbCr & _
" myCoun = .Range(""A65536"").End(xlUp).Row " & vbCr & _
" End With " & vbCr & _
" myID = 1 " & vbCr & _
" " & vbCr & _
" Set cn = New Connection " & vbCr & _
" cn.ConnectionString = ""provider=microsoft.jet.oledb.4.0;data source=\\Intsv\共有\000全社\108技術部\AS課\ASファイル.mdb"" " & vbCr & _
" cn.Open " & vbCr & _
" Set rs = New Recordset " & vbCr & _
" rs.Open ""業者住所録"", cn, adOpenKeyset, adLockOptimistic " & vbCr & _
" " & vbCr & _
"Dim nam " & vbCr & _
"Dim tel1 " & vbCr & _
"Dim fax1 " & vbCr & _
"Dim kei " & vbCr & _
"Dim yuu " & vbCr & _
"Dim juu " & vbCr & _
"Dim bik " & vbCr & _
"Dim gyou " & vbCr & _
" " & vbCr & _
"For Each myCell In myRange " & vbCr & _
" myRow = myCell.Row " & vbCr & _
" " & vbCr & _
" rs.AddNew " & vbCr & _
" With myKuremuSheet " & vbCr & _
" nam = .Cells(myRow, ""A"").Value " & vbCr & _
" tel1 = .Cells(myRow, ""B"").Value " & vbCr & _
" fax1 = .Cells(myRow, ""C"").Value " & vbCr & _
" kei = .Cells(myRow, ""D"").Value " & vbCr & _
" yuu = .Cells(myRow, ""E"").Value " & vbCr & _
" juu = .Cells(myRow, ""F"").Value " & vbCr & _
" bik = .Cells(myRow, ""G"").Value " & vbCr & _
" gyou = .Cells(myRow, ""H"").Value " & vbCr & _
" End With " & vbCr & _
" rs!ID = myID " & vbCr & _
" myID = myID + 1 " & vbCr & _
" rs!業者名 = nam " & vbCr & _
" rs!tel = tel1 " & vbCr & _
" rs!fax = fax1 " & vbCr & _
" rs!携帯その他 = kei " & vbCr & _
" rs!郵便番号 = yuu " & vbCr & _
" rs!住所 = juu " & vbCr & _
" rs!備考 = bik " & vbCr & _
" rs!行 = gyou " & vbCr & _
" " & vbCr & _
"Next " & vbCr & _
"rs.Update " & vbCr & _
" " & vbCr & _
"rs.Close " & vbCr & _
"Set rs = Nothing " & vbCr & _
"cn.Close " & vbCr & _
"Set cn = Nothing " & vbCr & _
" " & vbCr & _
"End Sub "

oModule = book.VBProject.VBComponents.Add(VBIDE.vbext_ComponentType.vbext_ct_StdModule)
oModule.CodeModule.AddFromString(sCode)

'***マクロ実行******
xl.Run("マクロ")
'*******************

xl.close(False)
xl = Nothing()
xl.Quit()
xl = Nothing

非常に長くて申しわけ御座いません。
■No15114に返信(masaさんの記事)
> " Set myKuremuSheet = Application.Workbooks(""住所録.xls"").Worksheets(""住所録"") " & vbCr & _
申しわけ御座いません 14行目のコードは参照を既に追加したエクセルを起動するコードでした
また この行の前に新しいエクセルにデータを取り込むコードがありますので
よろしくお願い致します。

DOBON.NET | プログラミング道 | プログラミング掲示板