如何在Access/VBA中操作附件字段[英] How to Manipulate Attachment Field in Access/VBA

问题描述

我决定做一个自动机,这将是一个全新的问题,互联网上任何人都不会问.

目前,我的工作流程是这样的:

将数据导入 Access -->计算一切——>退出访问,打开 Excel -->刷新所有数据并使用Automaton Outlook发送电子邮件(vba excel)

现在我想把它改成这样:

导入数据访问-->计算所有内容,然后打开附在 table1 中的 excel 文件(在附件字段内),刷新所有数据(已经直接连接到 Access 本身)然后保存并关闭 excel(将更改保存到附件字段中)
-->在Form上,选择要报告的组,访问打开的excel并运行在Excel文件中准备好的宏(excel仍然不可见),调用outlook自动机
-->新邮件出现,关闭excel文件.

如果你能建议任何更好的方法,我会跟随光.现在,我想知道如何去做我脑海中突然出现的新想法:D

所以,什么vba代码来操作附件字段?

如何在vba中打开excel附件,运行excel宏?
如何关闭excel附件并将其保存回附件字段中的任何修改?:D

编辑1:
我当前的代码:

展开|选择|Wrap|行号
解决方案
我绝对不惜一切代价反对附件字段.
首页 >主题>微软访问/vba >问题>表容量>Post#3 附件会很快耗尽你的可用文件空间.

首先,我会重新考虑 Excel 中需要哪些无法在 Access 中完成的内容?你提到做"计算";在 Access 中,所以它引出了这个问题.

其次,您提到您已经在 Excel 文件中使用了一些自动化来处理 Outlook - 为什么不稍微改变您的工作流程:
导入到 Access >计算>自动化打开 Excel 实例 使用文件并刷新 >发送您的电子邮件 >关闭 Excel 实例.恕我直言,比在附件字段中尝试任何东西要好得多.

这是 MS 关于 将文件和图形附加到数据库中的记录.
1)数据库中的附件仍然需要在用户的电脑上安装Excel
2)当你打开文件时,它会在一个临时位置打开
3) 任何更改都必须在 Access 中进行交互以确认更改.
4) 我认为使用这种方法你会遇到很多问题.想到的是,如果 Excel 文件在打开时损坏了会发生什么.

恕我直言,您最好使用自动化 Excel 实例.

啊...但是您的 Excel 文件存在问题,希望以独占状态打开链接到 Access 表:https://bytes.com/topic/access/answe...-closing-accdb 您的模式为拒绝共享...正如您所发现的,将其更改为:"Mode=Share Deny None"这应该可以让事情很好地融合在一起.

(我有另一个想法是使用 MS Query 代替链接表;但是,我将把讨论留在前面提到的相关线程中)


>>如果您坚持使用附件字段,我们将从那里开始.

@ZMBD:谢谢,我已将报告 .xlsb 附加到访问附件字段中,只有 1 个文件所以我们不必担心容量.

你的路由器很聪明
访问>计算>自动化打开 Excel 实例 使用文件并刷新 >发送您的电子邮件 >关闭 Excel 实例.
我也在考虑这个问题,但事实上我很懒,所以我找到了 Lazier 方法来做到这一点.

我将解释我所做的工作流程4小时前.

我以前每天做的工作流程(不是前女友)是这样的:
原始数据 -->导入访问、计算、准备结果、关闭访问 -->打开 excel,刷新所有(连接),使用我的模块发送电子邮件(此模块有 3 个步骤,根据我的条件过滤所有内容,保存、打开和复制我选择的所有范围到 Outlook,甚至附件本身到电子邮件 - 自动机部分).

好了,现在,我的懒惰等级又上新了.我问我自己,为什么我们不编写访问代码来做所有事情呢?
那一刻,我的脑海里像爆米花一样弹出了2个选项(我想吃一些)


(这部分与2个选项相同)
将report.xlsb附加到1个具有附件字段的新表中,以确保我在打开访问时是否拥有该报告excel,我永远不会丢失它.
但是问题出来了,如果我将此附加到访问中,最快的方法是什么,最少的代码?
我去上网,他们使用 envinr() 来获取临时文件夹并包含文件名:D 很好,可以工作,但会出现更多问题.
然后我发现 DAO.recordset2 类型可用于加载/保存/删除附件字段.经过1小时的搜索,我得到了我的救命稻草.
我坚持下去并编写了一些代码来共同制作所有内容.


在这部分,我的函数会将我的报告文件从附件字段保存到"D:\"中.如果该文件不存在.
接下来,它刷新所有(连接),然后保存工作簿,删除oldone,将我的文件加载回附件字段.

(这部分不同)
现在我有 2 个选项来编写自动化 Outlook 代码:

1/重写所有内容稍后绑定自动机以供 Outlook 访问(或者只是从 excel 报告文件中复制然后调整)

2/让excel在里面运行宏 然后关闭excel文件,让outlook新邮件可见.

说到这里,我的懒惰等级突然同时提升了2级.
结果,我使用了


展开|选择|换行|行号

我以前每天做的前工作流程(不是前女友)是这样的:
原始数据 -->导入访问、计算、准备结果、关闭访问 -->打开 excel,刷新所有(连接),使用我的模块发送电子邮件(此模块有 3 个步骤,根据我的条件过滤所有内容,保存、打开和复制我选择的所有范围到 Outlook,甚至附件本身到电子邮件 -
自动机部分).
那么为什么不直接从访问中发送信息作为报告呢?带有插件的 Acc2010 可以发送格式为 PDF 文件的报告,而 Acc2013 使用内置的 PDF 生成器执行此操作.

本文地址:https://www.itbaoku.cn/post/1050621.html