【问题标题】:Passing a variable into excel VBA using C# and then running the VBA script使用 C# 将变量传递到 excel VBA,然后运行 ​​VBA 脚本
【发布时间】:2019-02-21 14:21:46
【问题描述】:

首先让我说我不知道​​我在做什么......所以我已经外包了一家公司用 C# 编写代码,它试图监视一些文件夹,当出现新文件时,它会输入文件将路径作为字符串转换为 excel VBA 代码。所以这是我的问题。假设文件路径是“D:\testFile”,下面的代码可以工作:

Sub test5(Path As String)
    MsgBox Path, vbInformation
End Sub

它显示一个显示 D:\testFile 的消息框,下面的代码有效:

Sub test1()
    Workbooks.Open Filename:="D:\testFile"
End Sub

它打开文件。当然,这也有效:

Sub test2()
    Path = "D:\testFile"
    Workbooks.Open Filename:=Path
End Sub

当然这是可行的:

Sub test3()
    Path = "D:\testFile"
    X = Path
    Workbooks.Open Filename:=X
End Sub

但是,此代码不起作用:

Sub test4(Path As String)
    X = Path
    Workbooks.Open Filename:=X
End Sub

我认为值得注意的是,下面的代码也不起作用。

Sub test6(Path As String)
    MsgBox Path, vbInformation
    Workbooks.Open Filename:="D:\testFile"
End Sub

它显示 MsgBox 但不打开 testFile...注意打开测试文件的行没有从 C# 接收任何类型的输入...所以如果带有消息框的行有效...所以应该打开线......所以......基本上......我如何让测试#4工作?请参阅下面的测试#4:

Sub test4(Path As String)
    X = Path
    Workbooks.Open Filename:=X
End Sub

我的想法是从 C# 程序输入的字符串不好……但这似乎不会导致测试 #6 不起作用。此外,excel vba 代码保存在一个模块中。但是 C# 代码是使用工作表中的测试 excel VBA 文件设置的。所以我将这些代码保存在一张表中以复制他的测试文件(即...右键单击 Sheet1 并查看代码)。我的理解是这不是好的做法,最终产品需要在模块中包含 excel VBA 代码。 (只是提到它以防它与为什么这可能不起作用有关)另外,值得一提的是,这个外部编码器测试的唯一东西是一个消息框......当然和我发现的一样...... .

【问题讨论】:

  • 你有C#代码吗?如果有,请发帖。
  • 我知道...但是...我不确定它的确切位置或如何打开它...压缩文件夹中有很多东西...我打开了压缩文件文件夹并单击 setup.exe ...这就是我所做的一切。这些是文件夹:.git、应用程序文件、ConsoleApp1、示例文件和包。每个都包含几个文件和文件夹。此外,在顶层有一些文件不在文件夹中。它们是:setup.exe、autorun.inf、FileWatcher.application、FileWatcher.docx、fileWatcher.sln

标签: c# excel vba


【解决方案1】:

解决方案很简单...我只需要在文件路径的末尾添加“.csv”。如果只有一个具有该名称的文件路径,这不是问题,但如果我有 2 个具有相同名称的文件,一个是“.csv”,一个是“.txt”,那么这就是我有一个问题。

【讨论】:

    猜你喜欢
    • 2019-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-05
    • 2023-03-13
    • 2023-01-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多