|
お世話になります。
時系列で並んでいるExcelのデータのうち、ある一日のデータのみをアクセスへEXPORTしたいのですが、EXCELの項目名とAccessのフィールド名が同じものだけEXPORTするようにしたいのです。deleteまではスムーズですが、その後のどこをどういう風に直したらいいかわからなくなってしまいました。
教えていただけませんでしょうか。
<EXCEL>
B C E
2009/8/1 さんま あじ いわし
↓
<Access>
A B C D E
2009/8/1 さんま あじ いわし
-------------
Dim CBk As Workbook
Dim CSht As Worksheet
Dim Cr As Byte: Dim Col As Byte
Public Sub Port_Export()
Dim myDb As DAO.Database
Dim myRst As DAO.Recordset
Dim myFileName As String: Dim myTblsql As String: Dim myTbl As String
Dim dt As Date
Dim fld As Long
Set CBk = ThisWorkbook: Set CSht = CBk.ActiveSheet
dt = CSht.Cells(2, 1).Value
Select Case CBk.ActiveSheet.Name
Case "Pr": myTbl = "Daily"
Case "Bg": myTbl = "Ind"
End Select
myFileName = "test.mdb"
myTblsql = "delete * FROM " & myTbl & " WHERE " & myTbl & ".date in(#" & dt & "#)"
Set myDb = OpenDatabase(CBk.Path & "\" & myFileName)
myDb.Execute myTblsql
Set myRst = myDb.OpenRecordset(myTbl, dbOpenDynaset)
Cr = 8: Col = 17
myRst.AddNew
ct = 17
Do Until CSht.Cells(Cr, 17) = ""
If CSht.Cells(Cr, 17) = dt Then
Do Until CSht.Cells(Cr, Col) = ""
For fld = 0 To myRst.Fields.Count - 1
If myRst(fld).Name = CSht.Cells(7, ct) Then
With myRst
.Fields(fld) = CSht.Cells(Cr, Col)
.Update
End With
ct = ct + 1
End If
Next
Loop
End If
Cr = Cr + 1
Loop
myDb.Close
Set myRst = Nothing
Set myDb = Nothing
End Sub
|
|