首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据导出的Access数据中的条件,在两个工作簿之间复制和粘贴Excel行

根据导出的Access数据中的条件,在两个工作簿之间复制和粘贴Excel行
EN

Stack Overflow用户
提问于 2018-09-15 00:44:52
回答 1查看 82关注 0票数 0

在上个月通过这些论坛自学之前,我没有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中执行此操作。希望这篇文章很容易理解。

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2018-09-20 15:34:35

根据我的经验,将Excel文档导入到临时的新(或完全空的) Access表中通常是最简单的方法。这样您就不必像在Excel VBA中那样担心单元格引用了。即使Excel文档中的旧数据每次只有几处新更改,将其导入到临时Access表中可能是最简单的方法,因为这样您就可以将此表中的数据与另一个永久Access表中的数据进行比较,并根据前者更新后者。

就原始Excel文件而言,如果您需要删除其中的行,那么导出一个新的Excel文件可能会更快,该文件只包含旧文件应该包含的数据,然后使用VBA删除(或者-更安全!-重命名)旧文件。

所以开发过程是这样的:

  1. 通过以下方式保存导入步骤:首先通过Access的功能区选项“外部数据”(选项卡) ->" Excel“导入Excel文件,完成后,请务必选中”保存导入步骤“框并记下您为”保存的导入“指定的名称,因为您将在

代码中使用该名称。

  1. 在Access中,编写一个用于删除表的函数。VBA代码为:

Const cTable = "MyExcelTempTable“If TableExists( cTable ) Then DoCmd.DeleteObject acTable,cTable End If

现在,您可以对imported.

  • Write VBA代码中的数据测试您的删除功能,以导入相同的电子表格来创建相同的表:

Const = " Import -MyExcelTempTable“‘导入cSavedImport

  • Write文件DoCmd.RunSavedImportExport更多cSavedImport函数检查导入的表格是否有错误数据,然后将其复制到永久表中。您可能正在更新现有记录或添加新记录。无论使用哪种方法,您都可以使用Access查询或SQL来执行此操作,并从VBA运行它们。

  • 编写了一个VBA函数来重命名旧的Excel文件。(如果每次Excel文件名不同,则可以使用InputBox。我这样做是为了导入Excel文件,并且我设置了一个默认值,这样我就不必键入太多。)

  • 编写一个VBA函数来导出新版本的Excel文件。

  • 使您自己成为窗体上的一个按钮,当单击该按钮时,将运行VBA函数。在该函数内部,运行上述步骤2到6。

我不确定我的答案是否与您正在尝试做的完全匹配,但希望您对工作流程有足够的了解,以了解您所需的详细信息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52336156

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档