0

Access 2003 で Excel ファイルを取得するモジュールを実行しようとしています。セルに情報がある場合は、フィールド ヘッダーと A1、B1 などのセルをコピーして、各行をループします。コピーする必要があるデータを含むセルにもコメントがあります。

したがって、完璧なシナリオでは、コードは各行をセルごとに処理し、ユーザー、日付、セルのデータ、およびコメントを取得して、既存のアクセス テーブルに新しいレコードを作成します。セルが空の場合、バイパスされます。私は 4 枚のシートを持っており、コード ループを作成する方法を知っています。Excel からのプルにまったくアクセスできません。

データをインポートするだけではなく、コメントで並べ替える必要があります。

アドバイスをいただければ幸いです。ありがとう!

以下は、私が得たと思う最も近いものです:

Sub copy3()

Dim rs2 As New ADODB.Recordset
Dim cnn2 As New ADODB.Connection
Dim cmd2 As New ADODB.Command

With cnn2
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data Source=C:\FilePath.xls;" & "Extended Properties=Excel 8.0;"
.Open
End With

Set cmd2.ActiveConnection = cnn2
cmd2.CommandType = adCmdText
cmd2.CommandText = "SELECT * FROM [Jan-Mar$] Where [Name] IS NOT NULL"
rs2.Open cmd2

While Not rs2.EOF
...Not sure what to write here but I got a msgbox to appear...
rs2.MoveNext
Wend
4

1 に答える 1

2

アドバイスと助けてくれたRemouに感謝します。これが最終的に私のために働いたものです:

Set rs = db.OpenRecordset("TestTable")
xl.Visible = False

Set ws = xl.Workbooks.Open("C:\file.xls").Sheets("Jan-Mar")
Set rng = ws.UsedRange

'Row 1 is all dates so start at Row 2
For i = 2 To rng.Rows.Count
    'Column A contains names so start at Column B
    For j = 2 To rng.Rows(i).Cells.Count
        If rng.Cells(i, j) = "" Or rng.Cells(1, j) = "Total" Then

    Else
        On Error Resume Next
        rs.AddNew
        rs!EmployeeName = rng.Cells(i, 1)
        rs!Date = rng.Cells(1, j)
        rs!PointValue = rng.Cells(i, j)
        str = rng.Cells(i, j).Comment.Text
        str = Right(str, Len(str) - 14)
        'MsgBox str
        rs!Comments = str
        rs.Update
    End If
Next
Next
Set rs = Nothing
Set rng = Nothing
ws.Parent.Close
xl.Quit
于 2013-01-23T23:31:02.470 に答える