用于Excel功能的C#加载项与VBA宏

用于Excel功能的C#加载项与VBA宏,c#,excel,vba,add-in,C#,Excel,Vba,Add In,我们希望给我们系统的用户机会将一些数据从数据库拖到Excel中。(仅读取数据,不可能将任何数据写入数据库)。用户没有直接访问数据库的权限,因此我们将为他们提供一些身份验证。(首先是连接到数据库,其次是使用我们系统的安全设置,这样用户1只允许查看某些表。) 我被指示为此开始编写C#addin,但一位同事被指示编写VBA宏 我曾考虑使用实体框架来访问数据,但我以前从未使用过它。我不知道他们会在宏中使用什么,但宏管理器认为我会用繁重的数据传输扼杀网络。他也不喜欢用户必须在电脑上安装插件的想法。然而,我

我们希望给我们系统的用户机会将一些数据从数据库拖到Excel中。(仅读取数据,不可能将任何数据写入数据库)。用户没有直接访问数据库的权限,因此我们将为他们提供一些身份验证。(首先是连接到数据库,其次是使用我们系统的安全设置,这样用户1只允许查看某些表。)

我被指示为此开始编写C#addin,但一位同事被指示编写VBA宏

我曾考虑使用实体框架来访问数据,但我以前从未使用过它。我不知道他们会在宏中使用什么,但宏管理器认为我会用繁重的数据传输扼杀网络。他也不喜欢用户必须在电脑上安装插件的想法。然而,我对macro和它们不是很安全的概念有一种模糊的不安。宏的安全性如何?他们的调整是安全的,还是有知识的用户可以更改代码

我想知道,每种方法的优缺点是什么,比我更有经验和知识的人的总体感受是什么

特别是关于以下事项:

  • 信息安全(不应访问某些表。)
  • 网络流量
  • 易于维护和将来的修改
  • 我没有注意到的任何其他相关问题

亲切的问候,

在这种情况下我会做的是: -在数据库上创建视图并将其分配给架构。不要限制数据,只需指定您希望他们看到的列,让他们在Excel中过滤数据(假设返回的数据量很大) -创建Active Directory组并为其成员提供对该架构的读访问权限 -使用Excel->Data->Connections(在Excel 2010中,不确定是否在2008中)将工作表连接到该视图


他们可以将excel中的数据弄乱,但不能将其写回数据库。您可以限制他们可以看到哪些表/列,并在视图中对查找表进行联接,使他们看不到数据库ID。

安全性在于服务器端,而不是vba。您可以访问服务器端的用户,用户仅使用其凭据通过vba登录数据库。没有闯入的风险。。。编写一个宏来登录数据库并检索记录集,如果您的“代码”仍然有问题,请返回并在此处发布-您的问题可能已经解决。是的,这是一个好主意。然而,这不是我们正在寻找的。我们的情况要复杂得多。有时,某个用户应该能够查看某个表,但不能查看表中的所有记录。这是通过一个存储过程来完成的,该过程检查用户可以看到哪些记录,但这不是静态的,不像一次性检查那么简单。所以我不能为每一个可能出现的想象场景创建一个视图。用户不是技术人员,如果是,他们可以自己将数据拖到Excel中(如果他们有DB用户名和密码)。