(vba)是否可以在不打开Excel文档的情况下将Access表中的数据列与Excel表中的数据列进行比较?

时间:2017-04-27 00:58:00

标签: excel vba ms-access compare

我想知道是否有方法(使用Access VBA)检查Excel工作表中的日期列(只有一个工作表)而不打开文件本身,然后将其与Access表中的一列日期。

澄清:我为我的术语含糊不清道歉。当我说"没有打开excel文件"我指的是从excel文件中获取信息而没有用户在屏幕或任务栏上弹出信息的行为。

澄清2:为了消除任何困惑,使用VBA来实现这一点是首选,但肯定不是必需的。我也可以使用Access宏和SQL(提供它从VBA部署)和其他东西。任何东西,只要它可以直接从Access运行。

额外信息: 两个实例中的日期应始终采用相同的顺序。我唯一关心的是a。)不必诉诸打开excel文档,b。)检查来自两个来源的数据是否相同。即如果它们完全相同则为true,如果存在轻微差异则为false。

2 个答案:

答案 0 :(得分:1)

虽然您可能不会自己编写代码来打开文件,但是我会相信可能的方法会打开文件以便阅读它。

在我看来,将Excel数据与MS Access进行比较的最简单方法是在工作表中创建一个Linked表,然后使用sql查询进行比较。

我可能会在每个表/ excelTable的末尾创建一个计算列,每个字段与一个管道连接' |'并比较这个键'。

注意:当您打开链接表时,文件将在后台打开。

答案 1 :(得分:1)

实际上,您不需要VBA,但可以连接到Excel工作簿甚至是Access SQL查询中的csv / txt文件。下面假设Excel数据维护列标题,其数据以单元格A1开头。

SELECT acc.*, xl.*
FROM myAccessTable acc
INNER JOIN
    [Excel 12.0 Xml;HDR=Yes;Database=C:\Path\To\Workbook.xlsx].[SHEEETNAME$] xl
ON acc.[DateColumn] = xl.[DateColumn];