在 excel 和 Visual Basic 之间共享变量

Share variables between excel and visual basic

我最近开始使用 Visual Basic Studio 使用 .NET Visual Basic 进行编程。我也在使用 excel VBA 制作一些宏。如果有人能回答我的问题,我将不胜感激,如果答案显而易见,我深表歉意,我才刚刚开始:

基本上,如果我在excelVBA中设置了一个变量,例如:

dim text as string

text = "hello world"

我是否可以在使用 visual basic 编程时使用该变量并保留它在 excel VBA 宏中设置时的值。

如果您需要说明,请发表评论。

非常感谢。

解决方案:

好的,我在解决方案的帮助下设法弄明白了,在 VB 中工作的代码如下:

Imports Microsoft.Office.Interop.Excel
Imports Microsoft.Office.Interop
Imports Microsoft.Office.Core

Public Class Form1
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

        Dim oxl As excel.application
        Dim owb As excel.workbook
        Dim osheet As Excel.worksheet
        Dim orng As excel.Range
        Dim strtext As String



        oxl = CreateObject("Excel.application")
        owb = oxl.Workbooks.Open(Filename:="C:\Users\USERNAME\Documents\Variable Passing Test.xlsm")

        oxl.Run("dosomethingtostrtext")

        strtext = oxl.Run("getstrtext")

        MsgBox(strtext)

    End Sub
End Class

访问另一个工作簿的 VBA 代码中的变量的一种方法是创建 return 这些值的函数。然后从您的其他应用调用这些函数。

例如,假设这是您 Excel 文件中模块中的代码,其中包含以下宏:

Option Explicit

Private strText As String

' Say you have a routine that manipulates strText (or not, even!)
Public Sub doSomethingToSTRTEXT()
    strText = "Hello World!"
End Sub

' This is the function to call to retrieve strText
Public Function getSTRTEXT() As String
    getSTRTEXT = strText
End Function

这是其他地方的 VBA 项目中的代码(不是本机上的 运行 .Net,只是 microsoft office sad),你有这个:

Option Explicit

Sub Test()
    ' Declare
    Dim WBK As Workbook
    ' Open the workbook in question
    Set WBK = Workbooks.Open(Filename:="C:\Path\To\File\With\VBA.xls")

    ' This code's own variable
    Dim strText As String

    ' Call the routine (or not) that does something to that workbook's vba's strText
    Application.Run (WBK.Name & "!doSomethingToSTRTEXT")

    ' Now let's retrieve that value via function!
    strText = Application.Run(WBK.Name & "!getSTRTEXT")

    ' Show it to me
    MsgBox strText
End Sub

我想把 ^ 上方的代码转换成 VB.Net 的事情留给你(或者在 SO 上搜索 .Net 代码来处理 Excel 对象)并尝试一下出来