在 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 对象)并尝试一下出来
我最近开始使用 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 对象)并尝试一下出来