将新的Excel工作表行导入MS Access

时间:2014-01-21 12:36:22

标签: excel vba ms-access

我在MS Access中有一个定期更新的表。 发生这些更新后,导出完成,因此我可以获得更新整个表的Excel工作表。

但现在我需要做反过来。有些人会打开这个文档并手动添加行,我需要找到一些方法将这些新行附加到Access表中,并带有一个标识符,说明它是否是手动输入的。

我的表格包含一个“学生”数据库。每一行对应一个“名称”,所以当有人在工作表中手动添加新名称时,会有一个新的学生,所以我需要它的行去一个新表中的数据库。我还需要那些手动输入的学生,如果他们以某种方式改变,就会更新。

我怎么能在Access中这样做?下面是一些例子:

访问表 - 表1

      Name       |   Country   |   Grades   |   IDNumber    |  Identifier
----------------------------------------------------------------------------
Scott            |    USA      | 8, 9, 10   |     1000      |  Automatic
Wolverine        |  Indonesia  | 2, 5, 7    |     2000      |  Automatic
Nightcrawler     |   Brazil    | 10, 0, 6   |     3000      |  Automatic
Jean Grey        |   China     | 10, 10, 10 |     4000      |  Automatic
Bobby            |   China     | 8, 7, 10   |     5000      |  Automatic
Kitty            |    USA      | 9, 9, 9    |     6000      |  Automatic

从Access表导出的Excel工作表:

      Name       |   Country   |   Grades   |   IDNumber    |  Identifier
----------------------------------------------------------------------------
Scott            |    USA      | 8, 9, 10   |     1000      |  Automatic
Wolverine        |  Indonesia  | 2, 5, 7    |     2000      |  Automatic
Nightcrawler     |   Brazil    | 10, 0, 6   |     3000      |  Automatic
Jean Grey        |   China     | 10, 10, 10 |     4000      |  Automatic
Bobby            |   China     | 8, 7, 10   |     5000      |  Automatic
Kitty            |    USA      | 9, 9, 9    |     6000      |  Automatic

包含需要导入Access表格的adicional数据的Excel工作表:

      Name       |   Country   |   Grades   |   IDNumber    |  Identifier
----------------------------------------------------------------------------
Scott            |    USA      | 8, 9, 10   |     1000      |  Automatic
Wolverine        |  Indonesia  | 2, 5, 7    |     2000      |  Automatic
Nightcrawler     |   Brazil    | 10, 0, 6   |     3000      |  Automatic
Jean Grey        |   China     | 10, 10, 10 |     4000      |  Automatic
Bobby            |   China     | 8, 7, 10   |     5000      |  Automatic
Kitty            |    USA      | 9, 9, 9    |     6000      |  Automatic
Tempest          |    Spain    | 10, 9, 2   |     7000      |  Manual <-- Who added will add the word "Manual" to it!
Magneto          |    USA      | 8, 0, 9    |     8000      |  Manual
Lizard           |    India    | 1, 3, 6    |     9000      |  Manual

附加工作表中包含新值的表格 - 表2:

      Name       |   Country   |   Grades   |   IDNumber    |  Identifier  
--------------------------------------------------------------------------
Tempest          |    Spain    | 10, 9, 2   |     7000      |  Manual 
Magneto          |    USA      | 8, 0, 9    |     8000      |  Manual
Lizard           |    India    | 1, 3, 6    |     9000      |  Manual

谢谢!

2 个答案:

答案 0 :(得分:1)

您可以在Access中创建指向Excel电子表格的链接表。

Link to data in Excel

然后,您可以在Access中创建一个查询,该查询提取Excel数据中未显示在相应Access表中的行

访问表:

AccessTable.png

Excel表格:

ExcelData.png

访问中的链接表:

LinkedTable.png

查询设计:

QueryDesign.png

查询结果:

QueryResults.png

答案 1 :(得分:0)

您可以使用链接表(将Excel作为链接表导入,而不是数据)。这将导致它将excel文档中所做的更改直接反映到您的Access环境中。

然后你可以随时运行一个简单的sql语句:

Insert Into [Students]([Name],[Country],[Grades],[IDNumber])
Select [Name],[Country],[Grades],[IDNumber] from [LinkedTable] 
Where [IDNumber] Not In (Select [IDNumber] from [Students])

假设IDNumber是主键。