我正在尝试简化必须定期创建的文档的制作。有些任务与完成它们的详细说明相关联,并且每个任务都有一个特定的 ID 号,可在各个项目中重复使用。我尽可能多地将这些任务 ID 收集到 Access 数据库中。
对于每个项目,其他人都会从我无法访问的另一个数据库中提取所有必需任务的列表,并将它们放入具有标准格式的 Excel 工作簿中。对于每个项目,我需要:
- 按 ID 号拉取所有相关任务
- 将它们与数据库中的标准列表进行比较,其中包含完成任务的步骤和一些其他信息
- 使用有关任务的特定信息生成具有特定格式的文档
在 excel 中编写宏似乎工作量很大,但这是最好的选择,但我不能确定 Access 数据库是否始终位于其所属的同一位置。由于数据库是所有项目中一致的项目,我考虑在 Access 中编写宏并让对话框询问电子表格的位置,但使用表格比较两个列表似乎比简单地在 excel 中生成比较表更复杂。我并没有真正考虑过在 Word 中编写宏,尽管这也是一种可能性。
我正在尝试找到创建此设置的最合理方法。使用 3 个不同的办公程序似乎相当复杂,但我可用的软件有限,无法实现此目的:
- Office 2007
- 无可比拟
- 安装的其他程序(我无法安装其他软件)似乎与该任务无关
有人知道该怎么做吗?
答案1
如果您有 Crystal Reports,您可以将 Excel 表连接到 Access 表;然后打印 2 份报告,一份包含 ID 匹配的数据,另一份列出没有 ID 匹配的记录。格式非常棒。我编写报告时将 Excel 文件连接到 Oracle 数据库以进行报告。您应该能够将 Excel 文件连接到 ACCESS 并创建相同类型的报告,假设两者都有要匹配的 ID 字段。
答案2
您是否考虑过使用 ODBC 连接来链接这两个数据集?
如果您的本地工作环境是数据库,并且您可以自动输入这些新数据字段,则可以使用简单查询来选择不匹配的(新)数据并从那里开始工作。遗憾的是,您不能简单地从第一个数据库跳转到您自己的数据库,或者让第一组数据导出简单地导出新数据或更改数据的 CSV。
在任一侧,您都可以附加新数据,并将其与现有数据进行比较(使用 Access 中的查询或 Excel 中的数据透视表)。如果您创建一个新的列/字段作为简单的布尔标志,则可以区分数据集并将它们合并到同一个表/文档中。或者,应用每周(或任何时期)导入的代码,以便您可以将此“标志”字段用于将来的查询。
数据透视表将是我的第一站,因为您可以在范围界定阶段比数据库查询更快地工作,并且可以在一个视图中查看您的报告/比较要求。
如果您可以“清洗”您的数据以使其匿名化,请发布一些示例以获得更具体的解决方案。
答案3
您可以将 Excel 数据作为记录集获取,这样可以轻松进行比较
Dim xldb As New adodb.Connection
Dim xlcmd As New adodb.Command
Dim XL As New adodb.Recordset
With xldb
.Provider = "Microsoft.ACE.OLEDB.12.0"
.ConnectionString = "Data Source=" & FileName & ";Extended Properties=""Excel 12.0 Xml;HDR=YES;ReadOnly=True"";"
.Open
End With
Set xlcmd.ActiveConnection = xldb
xlcmd.CommandType = adCmdText
xlcmd.CommandText = "Select * from [Sheet1$]"
XL.CursorLocation = adUseClient
XL.CursorType = adOpenDynamic
XL.LockType = adLockOptimistic
XL.Open xlcmd
现在您可以使用 XL 记录集,搜索/遍历它,并将信息放入数据库中