我正在为朋友构建一个小应用程序,他们希望能够使用Excel作为前端.(UI基本上是Excel中的用户形式).他们在Excel中有一堆数据,他们希望能够查询,但我不想将excel用作数据库,因为我认为它不适合这个目的,我正在考虑使用Access.[顺便说一句,我知道Access有它的缺点,但没有可用的预算和已经在朋友的PC上访问]
总而言之,我正在考虑将一堆数据转储到Access中,然后使用Excel作为前端来查询数据库并在userform样式环境中显示结果.
问题:
我有很强的Excel VBA技能,并认为我可以很快克服Access VBA但从未真正完成过Excel/Access链接.我可以把数据塞进Excel并用作准数据库,但这似乎比它的价值更痛苦(而不是一个强大的长期解决方案)
任何建议表示赞赏
亚历克斯
Ree*_*sey 42
我相信你会得到很多"不要这样做"的答案,我必须说,这是有充分理由的.这不是一个理想的解决方案....
话虽这么说,我之前走过这条路(和类似的路),主要是因为这项工作将其指定为一项艰难的要求,我无法谈论它.
以下是一些需要考虑的事项:
使用ADO/DAO从Excel链接到Access有多容易?它在功能方面是否非常有限,还是我可以发挥创意?
这是相当明确的.你比使用其他工具做的事情更有限,因为VBA和Excel表单比大多数完整的编程语言更有限,但没有任何东西会成为一个显示阻止.它有效 - 有时它有点难看,但确实有效.在我上一家公司,我经常不得不这样做 - 偶尔也会通过Excel中的VBA从Access和Oracle中提取数据.
我是否会支付性能损失(相对于在UI中使用表单而言)?
我的经验是肯定有一个性能.这样做会受到惩罚.我从不关心(在我的用例中,事情足够小以至于合理),但是Excel < - > Access比直接在Access中工作要慢得多.部分取决于你想做什么....
就我而言,似乎绝对最慢(也是最痛苦)的事情是尝试根据Access数据填写Excel电子表格.这不好玩,而且往往很慢.如果你必须走这条路,确保使用隐藏/隐藏的Excel做任何事情,否则重绘绝对会杀了你.
假设数据库将始终使用Excel VBA中的ADO/DAO命令进行更新,这是否意味着我可以让多个Excel用户使用该单个Access数据库而不会遇到任何并发问题等?
您几乎使用Excel作为客户端 - 与使用WinForms应用程序或任何其他工具的方式相同.Access的ADO/DAO客户端非常好,因此您可能不会遇到任何并发问题.
话虽这么说,Access不能很好地扩展.如果您有2个或3个(甚至10个)用户,这非常有用.如果你要100,你可能会遇到问题.此外,我倾向于发现Access需要定期维护才能避免出现腐败问题.必须定期备份Access DB.根据我的经验,定期压缩访问数据库有助于防止数据库损坏.
还有其他我应该注意的事情吗?
你这么做很难.使用Excel来访问Access将比直接使用Access要多得多.
我建议查看Access VBA API - 其中大部分与Excel相同,因此您将获得一个小的学习曲线.不同的部件使这更容易.您还将拥有Access报告和表单的所有优点,它们比Excel中的数据更加面向数据.报告对于这样的事情来说非常有用,并且从长远来看,使用宏和报告可以使生活更轻松.如果用户将使用表单来管理所有内容,那么在Access中执行表单将非常非常类似于在Excel中执行这些表单,并且看起来几乎相同,但会使一切更快更顺畅.
Dic*_*ika 15
我一直这样做.如果您正在使用ADO,那么您实际上并不是使用Access,而是基础数据库Jet.这意味着任何使用Excel的人都可以使用该应用程序 - 不需要访问.哦,我应该提一下,我工作的地方买了一堆Office Small Business许可证 - 没有Access.在这里工作之前,我会假设任何拥有Excel的人也会拥有Access.不是这样.
我为Access中的每个表创建一个类.我很少通过ADO运行查询,而是将该逻辑保留在类模块中.我使用SELECT语句读入并使用ADODB.Connection对象的Execute方法使用和UPDATE或INSERT写出来.
见http://www.dailydoseofexcel.com/archives/2008/12/21/vba-framework-ii/
如果你想看看我如何设置我的代码.
回答你的问题:如果你已经了解Excel VBA,那将是一个很小的学习曲线,但是会有一些学习要做; 你会在Access中支付一个性能惩罚,但这并不是那么糟糕,只有你可以决定它是否值得; 并且您可以让多个人访问数据库.
只是跳过excel部分 - excel用户表单只是一个穷人的版本,更强大的Access形式.Access VBA也与Excel VBA完全相同 - 您只需学习Access'对象模型.使用简单的应用程序,您无需编写更多VBA,因为在Access中您可以非常轻松地将事物连接在一起.
如果最终用户具有Access,则可能更容易在Access中开发整个内容.Access内置了一些WYSIWYG表单设计工具.
除非在Excel中运行用户表单有很大的优势,否则我将使用100%Access解决方案,该解决方案可以在临时的基础上将报表和数据导出到Excel.
根据您的描述,Access似乎是更强大的竞争者,因为它是为处理数据而构建的:
您可以使用更多工具来解决任何数据问题,而不必绕过Excel的限制并将其变为Access. ..
至于你的问题:
不知道,但我猜可能会有一个小的惩罚.
我看到的最大困难是尝试获取Access为您提供的所有功能,并在Excel中重新创建其中的一些功能.
是的,您可以拥有多个Excel用户和一个Access数据库.
再次,使用Access作为前端并将数据保存在网络上的链接Access数据库中会更有意义,而且很容易就像馅饼一样,Access中甚至还有一个向导可以帮助您实现这一点:只需单击一下即可.
真的,正如大多数人所说的那样,花一点时间熟悉Access,它将为您节省大量时间和麻烦.
如果您了解VBA并且熟悉Office对象模型,那么您可能会更好地了解Excel,但如果您已经完成了80%的工作.
在Access中执行此操作的其他优点:Access 2007运行时是免费的,这意味着如果您要将应用程序部署到1或30台PC,则会花费相同的成本:没有.
您只需要一个完整版本的Access进行开发工作(Runtime没有设计人员).