![]() |
||||
Option Explicit Dim i As Long, j As Long, k As Long, l As Long, m As Long Sub xls_to_ac() On Error GoTo endrtn Dim MyDatabase As Database Dim rst As Recordset Dim MyFile As String, strSQL As String Dim stra(3) As String MyFile = "C:\My Documents\xls_to_mdb.mdb" If Dir(MyFile) = "" Then MsgBox "C:\My Documents\xls_to_mdb.mdb not found" Exit Sub End If Set MyDatabase = Workspaces(0).OpenDatabase(MyFile) ' 'Date Delete ' strSQL = "DELETE FROM table1 ;" MyDatabase.Execute strSQL Application.StatusBar = "読み込み中・・・" For i = 1 To 3 Workbooks.Open Filename:="C:\My Documents\test_data_a000" & i & ".xls" l = 6 For k = 1 To 3 stra(k) = Lf_conv(Trim(Worksheets(1).Cells(l, 2))) l = l + 2 Next k ' 'Data Insert ' strSQL = "INSERT INTO table1 (xls,msg1,msg2,msg3) VALUES ('" & _ "a000" & i & "','" & stra(1) & "','" & stra(2) & "','" & stra(3) & "');" MyDatabase.Execute strSQL ActiveWindow.Close SAVECHANGES:=False Next i ' 'Fetch ' Cells.Select Selection.ClearContents m = 1 strSQL = "SELECT * FROM table1;" Set rst = MyDatabase.OpenRecordset(strSQL) Do Until rst.EOF With rst Worksheets(1).Cells(m, 1) = !xls m = m + 1 rst.MoveNext End With Loop Worksheets(1).Cells(1, 1).Select rst.Close Set rst = Nothing MyDatabase.Close Set MyDatabase = Nothing Application.StatusBar = "" MsgBox "end" endrtn: Application.Cursor = xlNormal Application.ScreenUpdating = True End Sub 'エクセルでの改行はvbLfのみなのでアクセスに書き込む時は '改行があればvbCrLfに変更する。 Function Lf_conv(strwk As String) As String On Error GoTo Err_1 Lf_conv = "" For j = 1 To Len(strwk) If Mid(strwk, j, 1) = vbLf Then Lf_conv = Lf_conv & vbCrLf Else Lf_conv = Lf_conv & Mid(strwk, j, 1) End If Next j Exit Function Err_1: MsgBox Err.Description, vbCritical End Function |
||||