使用Excel数据在VBA中创建Word文档标题标签
我正在尝试使用VBA将Word文档报表链接到Excel数据库。我在文档中插入了各种ActiveX文本框控件。我用唯一的代码(“代码”)手动输入这些文本框中的每一个。其他文本框控件将根据Excel数据库中的关联数据自动填充。匹配系数将为“代码” 当我运行以下代码时,我收到一个 运行时错误13“类型不匹配” 在第16行(使用Excel数据在VBA中创建Word文档标题标签,excel,vba,ms-word,activexobject,Excel,Vba,Ms Word,Activexobject,我正在尝试使用VBA将Word文档报表链接到Excel数据库。我在文档中插入了各种ActiveX文本框控件。我用唯一的代码(“代码”)手动输入这些文本框中的每一个。其他文本框控件将根据Excel数据库中的关联数据自动填充。匹配系数将为“代码” 当我运行以下代码时,我收到一个 运行时错误13“类型不匹配” 在第16行(如果cell.Value…)。我在VBA方面没有太多的经验,但我已经看到许多例子表明Value命令应该绑定到“Range”对象。谢谢你的帮助 Private Sub CommandB
如果cell.Value…
)。我在VBA方面没有太多的经验,但我已经看到许多例子表明Value命令应该绑定到“Range”对象。谢谢你的帮助
Private Sub CommandButton1_Click()
Dim objExcel As New Excel.Application
Dim exWb As Excel.Workbook
Dim b As Excel.Range
Dim c As Excel.Range
Dim r As Excel.Range
Dim cell As Excel.Range
'Set variables
Set exWb = objExcel.Workbooks.Open("C:\Documents\Book.xlsx")
Set b = exWb.Sheets("Sheet1").Range("B:B")
Set c = exWb.Sheets("Sheet1").Range("C:C")
Set r = exWb.Sheets("Sheet1").Rows
Set cell = exWb.Sheets("Sheet1").Range("A1:Z1000")
For Each r In c
If cell.Value = ThisDocument.TextBox1.Value Then
ThisDocument.TextBox2.Value = b.Value
End If
Next r
exWb.Close
Set exWb = Nothing
End Sub
您可以尝试以下方法:
Private Sub CommandButton1_Click()
Dim objExcel As New Excel.Application
Dim exWb As Excel.Workbook
Dim rng As Excel.Range, m, rw As Excel.Range
'Set variables
Set exWb = objExcel.Workbooks.Open("C:\Documents\Book.xlsx")
Set rng = exWb.Sheets("Sheet1").Range("A1:Z1000")
'Here we're looking for a match in ColC...
' change 3 to any other column you want to match on
m = objExcel.Match(ThisDocument.TextBox1.Value, rng.Columns(3), 0)
If Not IsError(m) Then
'got a match - fetch the other values from that row
Set rw = rng.Rows(m) '<< get the matching row as a Range
ThisDocument.TextBox2.Value = rw.Cells(1).Value 'value from colA
ThisDocument.TextBox3.Value = rw.Cells(2).Value 'value from colB
Else
'no match - clear the other textboxes?
MsgBox "No match found!"
ThisDocument.TextBox2.Value = ""
ThisDocument.TextBox3.Value = ""
End If
exWb.Close False 'no changes saved
Set exWb = Nothing
End Sub
Private子命令按钮1\u单击()
Dim objExcel作为新的Excel.Application
将exWb设置为Excel.工作簿
尺寸rng为Excel.Range,m、rw为Excel.Range
'设置变量
设置exWb=objExcel.Workbooks.Open(“C:\Documents\Book.xlsx”)
设置rng=exWb.板材(“板材1”)范围(“A1:Z1000”)
“在这里,我们正在寻找一个匹配的ColC。。。
'将3更改为要匹配的任何其他列
m=objExcel.Match(ThisDocument.TextBox1.Value,rng.Columns(3),0)
如果不是IsError(m),则
'获得匹配-从该行获取其他值
设置rw=rng.Rows(m)'如果r=
,您的意思是?您正在将r
设置为一个行范围,但随后将其作为中的变量用于每个行??如果你能用语言描述你的代码是用来做什么的,这将有助于你的问题。看起来您正在工作表上查找一个值,但随后用搜索的相同值填充TextBox2。是否匹配C列中的值,然后从匹配行的其他列中提取值?@TimWilliams我希望代码根据公共变量在工作表中找到相关的数据行。此通用变量位于Word文档和Excel工作表中。代码将扫描工作表('r')的行,并找到与Word文档文本框(TextBox1)匹配的变量。一旦找到匹配项,它将使用匹配行中其他列的值填充其他文本框。。。。。。我想现在我看到我的代码使用了相同的值,正如您所注意到的。不管怎样,我甚至无法获得相同的值来填充我的TextBox2值。@braX我正在将R设置为我工作表中的所有行,以便我可以扫描特定列中的行以找到匹配值。您是否在excel工作表的特定列中查找匹配项?我收到一个运行时错误“438”-对象不支持此属性或方法-在第13行,m=exWb.Match。。。