Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Excel数据在VBA中创建Word文档标题标签_Excel_Vba_Ms Word_Activexobject - Fatal编程技术网

使用Excel数据在VBA中创建Word文档标题标签

使用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

我正在尝试使用VBA将Word文档报表链接到Excel数据库。我在文档中插入了各种ActiveX文本框控件。我用唯一的代码(“代码”)手动输入这些文本框中的每一个。其他文本框控件将根据Excel数据库中的关联数据自动填充。匹配系数将为“代码”

当我运行以下代码时,我收到一个

运行时错误13“类型不匹配”

在第16行(
如果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。。。