VBA和c#之间的通信,具有可移植性,没有管理员权限

本文关键字:可移植性 管理员 权限 之间 通信 VBA | 更新日期: 2023-09-27 18:03:54

我正在尝试编写一些可以访问我在WPF c#应用程序中编写的方法的东西,从vba工作表,中介是可以接受的,以及任何命令行解决方案,只要我可以从excel中运行这个中介,我需要发送的数据将被保存。

有没有人知道任何体面的解决方案发送数据到c#没有注册dll,最好是在一个便携式的方式,我可以很容易地移动到其他机器?

在这件事上的任何帮助将非常感激,我正在寻找正确方向的指针,因为COM解决方案现在是不可行的。

欢呼。

VBA和c#之间的通信,具有可移植性,没有管理员权限

您可以编写一个接受命令行参数的c#控制台应用程序,然后使用Shell命令调用它。

下面是一个处理输入参数的示例控制台应用程序:使用系统;
namespace ConsoleAppWithParams
{
    class Program
    {
        public static void Main(string[] args)
        {
            Console.WriteLine("Number of command line parameters = {0}",
               args.Length);
            foreach (string s in args)
            {
                Console.WriteLine(s);
            }
            Console.ReadLine();
        }
    }
}

注意参数来自命令行,所以它们是字符串。如果需要其他数据类型,则需要验证和转换参数。

你可以在Excel VBA中调用它,如下所示:

Sub UseCSharpApp()
    Shell "D:'Documents'ConsoleAppWithParams.exe Tom Dick Harry"
End Sub

如果你的c#应用程序相当简单,那么唯一的要求就是将它复制到预期的目录,并在PC上安装正确的。net框架版本(或最新版本)。如果c#应用程序是针对。net Framework 2.0编写的,那么很可能大多数Windows pc在商业环境中都能够使用它,但显然你应该检查一下你的环境是否如此。

注意,使用这种方法,您只能在第一次调用应用程序时传入值。这并不是一个在所有场景中都有用的解决方案,但如果这是您需要做的全部工作,则可能有效。