使用VBA从文本文件

时间:2016-05-06 20:26:16

标签: vba excel-vba excel

我正在开发一个项目,使用rule-triggered VBA代码处理一些传入的Outlook消息。

但是,我不希望在代码需要更改时手动更新每个用户的收件箱的代码。所以我的想法是将一个文本文件放在一个共享驱动器上,然后让VBA将该文本文件拉下来并将其视为代码。从本质上讲,我想将该文本文件用作一个小代码库。

我能够找到让我非常接近目标的this link。但是,我遇到了一些问题。

这是我放在一起的代码。它附加到我插入Excel文件的Rectangle形状的click事件。最后,我将把它移到Outlook,但我只是先用Excel VBA进行基本测试。

Sub Rectangle1_Click()
On Error GoTo Err_Handler

    Dim enviro As String
    Dim myFile As String

    'Pull code "library" from text file on user's desktop
    'This will eventually be changed to reside on a shared drive
    enviro = CStr(Environ("USERPROFILE"))
    myFile = enviro & "\Desktop\hello_vba.txt"

    'If the "Library" module already exists, delete it
    For Each a In Modules
        If a.Name = "Library" Then
            a.Delete
            Exit For
        End If
    Next

    'Add a new module
    Set m = Application.Modules.Add

    'Rename it to "Library"
    m.Name = "Library"

    'Insert the text from the other file to this new module
    m.InsertFile myFile

    'Call the hello() subroutine from the retrieved text file
    Library.Hello

Exit_Here:
'Cleanup code goes here
Exit Sub

Err_Handler:
MsgBox Err.Description
Resume Exit_Here
Exit Sub

以下是名为“hello_vba.txt”的外部文本文件的内容:

Sub Hello()
        MsgBox "Hello"
End Sub

我第一次运行它时,使用调试器我可以看到它创建了新模块,然后进入说明的行:

m.Name = "Library"

然后在调试器中弹出一个窗口,显示:

  

此时无法进入休息模式

当我点击该消息的继续时,我得到一个

  

需要对象

错误消息。如果再次运行它,那么我会收到更多错误消息,但我最终会弹出一个成功的“Hello”消息框。

我想知道我是否可能没有“昏暗”地修改“a”或“m”变量,或者如果在尝试拉入文本文件并立即将其视为代码时出现问题?

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

要运行新代码,请尝试使用Application.Run而不是Library.Hello

将写成:

Application.Run("Hello")

这有用吗?