在上个月通过这些论坛自学之前,我没有Access、VBA编码或Excel宏方面的经验。感谢论坛和贡献者。到目前为止,我很享受我的访问学习,它提供的挑战,并感谢我能得到的任何帮助。因此,到目前为止,我使用的代码和方法可能会令人费解和困惑。我将尽我所能提供相关细节和准确的术语。
我在一个实验室工作,正在创建一个用于半自动报告的Access表单。从客户端接收样本并将其记录到Excel Table R&D Log中。工作表为InProcess。样品根据其来源站点进行排序,并给出一个或两个字母的站点代码(G、D、WH等)。在单独的Excel列中使用ID "yy-000“(即D18-096)。可以提交样品进行多种分析(金属、水、土壤等)并且如果在样品中识别出多个分析物,则甚至可以具有多行报告。还有其他几列,如接收日期、报告日期、单位等。报告样本后,我手动将其复制并粘贴到Archived工作表中,然后从InProcess工作表中删除记录和空白行。由于一个样本可能有多个分析结果和更多的潜在结果,因此每个记录将在新的Excel行中报告(具有相同的D 18-096 ID编号)。因此,对于当前格式中的每个样本,都没有一个唯一的标识符或主键。R&D Log由实验室技术人员手动更新,工作表InProcess是Access数据库中的一个链接表。
Access数据库使用窗体frmInProcess上的两个组合框来筛选链接表的查询qryInProcess。组合框用于过滤报告目标(一个客户端可能会收到多个站点代码)和分析(根据分析类型将报告分开)。该查询还过滤掉空白结果和空白日期,因此只有完成的样本才会显示在过滤后的表单上。到目前为止,我已经生成了VBA代码,它将表单导出为.pdf,使用唯一的文件名保存文件,并打开outlook将报告邮寄出去。我还设法将过滤后的表单frmInProcess导出到一个Excel文件Access Test (而不是链接文件)。
我现在要做的是自动将完成的测试结果从Excel工作表R&D Log: InProcess传输到R&D Log: Archived,并从InProcess工作表中删除记录。我不确定是否可以将筛选的表单导出到链接的Excel表中,或者是否必须使用单独的Excel文件(或者这是否与代码的简单性有关?)。现在,我要在Excel Access Test中读取导出的筛选表单,根据几个条件(站点、ID、分析、分析、报告日期)在R&D Log中查找匹配的行,并自动在R&D Log工作表之间传输记录。最终结果是,Access为已完成的测试生成报告,并将记录从InProcess测试中删除并传输到Archived测试中。我猜我可能需要关闭Access应用程序并在Excel中执行此操作。希望这篇文章很容易理解。
谢谢。
发布于 2018-09-20 15:34:35
根据我的经验,将Excel文档导入到临时的新(或完全空的) Access表中通常是最简单的方法。这样您就不必像在Excel VBA中那样担心单元格引用了。即使Excel文档中的旧数据每次只有几处新更改,将其导入到临时Access表中可能是最简单的方法,因为这样您就可以将此表中的数据与另一个永久Access表中的数据进行比较,并根据前者更新后者。
就原始Excel文件而言,如果您需要删除其中的行,那么导出一个新的Excel文件可能会更快,该文件只包含旧文件应该包含的数据,然后使用VBA删除(或者-更安全!-重命名)旧文件。
所以开发过程是这样的:
代码中使用该名称。
Const cTable = "MyExcelTempTable“If TableExists( cTable ) Then DoCmd.DeleteObject acTable,cTable End If
现在,您可以对imported.
Const = " Import -MyExcelTempTable“‘导入cSavedImport
我不确定我的答案是否与您正在尝试做的完全匹配,但希望您对工作流程有足够的了解,以了解您所需的详细信息。
https://stackoverflow.com/questions/52336156
复制相似问题