对Access 2003 VBA中的Excel数据进行排序/操作

对Access 2003 VBA中的Excel数据进行排序/操作,excel,ms-access,vba,excel-2003,Excel,Ms Access,Vba,Excel 2003,我正在尝试运行Access 2003中的一个模块,该模块接受一个excel文件,如果单元格中有信息,则复制A1、B1等中的字段标题和单元格。。。当它循环通过每一行时。单元格中还有注释,其中包含需要复制的数据 因此,在一个完美的场景中,代码将逐个单元格地遍历每一行,获取用户、日期、单元格数据和注释,并在现有的访问表中创建一条新记录。如果单元为空,则将绕过该单元。我有4张工作表,我知道如何使代码循环,我根本无法从excel中获取数据 我也不想只导入数据,它需要用tact中的注释进行排序 如有任何建议

我正在尝试运行Access 2003中的一个模块,该模块接受一个excel文件,如果单元格中有信息,则复制A1、B1等中的字段标题和单元格。。。当它循环通过每一行时。单元格中还有注释,其中包含需要复制的数据

因此,在一个完美的场景中,代码将逐个单元格地遍历每一行,获取用户、日期、单元格数据和注释,并在现有的访问表中创建一条新记录。如果单元为空,则将绕过该单元。我有4张工作表,我知道如何使代码循环,我根本无法从excel中获取数据

我也不想只导入数据,它需要用tact中的注释进行排序

如有任何建议,将不胜感激。谢谢

下面是我想我得到的最接近的一个顺便说一句:

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

谢谢你的建议和帮助。这就是最终对我起作用的原因:

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

什么样的?这是非常接近我要找的,是的。但是我不是让它一行一行地移动,而是让它一个单元格一个单元格地移动,并挑选出包含数据的单元格。.Rows.Count是否执行此操作?我正在读关于它的书,但只了解其中的一部分。。。如果rng.Cells(i,1)喜欢“Program*”,那么它会做什么呢?我熟悉If-Then语句,但从未使用过Like。谢天谢地,我想。我只是需要把它弄得更糟。但是要逐单元格移动以检查是否为null或包含值,我是否应该在到达每行末尾后使用重置为1的整数?
用于I=1到rng。Rows.Count
用于范围
rng
中的每行I。您可以从以下行获取单元格:
对于i=1到rng.Rows.Count对于j=1到rng.Rows(i)。cells.Count调试。下一步打印rng(i,j)