将Excel数据导入MS Access表

将Excel数据导入MS Access表,excel,ms-access-2010,Excel,Ms Access 2010,我有一个Excel表格,它由以下程序生成: 我想把那张纸导入MS Access程序。如何通过过滤数据将这些数据放入相关表中 |DeptNo | DeptName |=>部门表 |StaffNo | StaffName |=>员工表 |DeptNo | StaffNo | WorkDate | Week |=>考勤表您可以编写一个程序,概述如下- Revised on 3/25 late Dim WeAreInWorkDates As String For each row in worksh

我有一个Excel表格,它由以下程序生成:

我想把那张纸导入MS Access程序。如何通过过滤数据将这些数据放入相关表中

|DeptNo | DeptName |=>部门表

|StaffNo | StaffName |=>员工表


|DeptNo | StaffNo | WorkDate | Week |=>考勤表

您可以编写一个程序,概述如下-

Revised on 3/25 late
Dim WeAreInWorkDates As String

For each row in worksheet

    If ColA.value = Dept row then
        WeAreInWorkDates = "NO"  'reset flag to false
        get values
        if these values don't already exist in DeptTable then
            Insert new row into DeptTable
        endif

    elseIf ColA.value = Staff row then
        WeAreInWorkDates = "NO"  'reset flag to false
        get values
        if these values don't already exist in StaffTable then
            Insert new row into StaffTable
        endif

    elseIf ColA.value = "WorkDate"
        bypass row
        WeAreInWorkDates = "YES"   ' set flag

     elseIf ColA.value = "Summary"
        bypass row
        WeAreInWorkDates = "NO"  'reset flag to false

     elseIf ColA.value = blanks
        bypass row

     elseIf  WeAreInWorkDates = "YES" then        
        'get values from the row into local variables
        Dim xxx
        xxx = myXLS.Cells(nRow,nCol)  ...  etc
        ' Prevent double posting of the XLS into the MDB tables
        'if these values don't exist in AttendanceTable then
        SET rst = db(Select * From AttendanceTable Where atKey = xxx(i.e. myLocalVars))
        if rst.BOF and rst.EOF then    ' rst is empty, ergo not yet posted
            Insert row in AttendanceTable
        endif

     else
         display that we have an unknown row
     endif

您需要处理excel文件并手动“清理”它,以便它可以进入MS Access。你可以记录一个清洗过程的宏,这样你可以更快地完成。我不理解数据行StaffSummary=803,这显然是不正确的。这一点并不重要。谢谢,这是我想要的方式。但我的vba很差。我会尽力理解。如果您能为其他部分提供实际代码,如果WeAreInWorkDates获取值,如果AttendanceTable中不存在这些值,则在AttendanceTable中插入行,那么我可以自己处理其他部分。我可以将工作日期和员工总结之间的范围命名为.rangework date,staffsummery或其他,然后它可以用于导入访问,而不是逐个访问。我已经修改了上述内容。WeAreInWorkDates是一个变量,用于跟踪我们是否处于工作日期和摘要之间,因为实际考勤行没有行标识符。您不希望执行范围方法,而是在向mdb过帐之前测试每一行,并防止重复过帐。如果你只是在范围内砰地一声,那么一些操作员错误可能会两次或三次发布相同的XLS。。。