Vba 从嵌入式Excel电子表格在Word中填充组合框

Vba 从嵌入式Excel电子表格在Word中填充组合框,vba,excel,combobox,Vba,Excel,Combobox,感谢您努力回答我的另一个问题,但我已放弃尝试从Excel在Word中填充组合框。我让它工作,但问题是,当Excel文件被移动,然后Word文件被关闭并重新打开时,Comobbx不再被填充。不幸的是,这需要是一个独立的Word文档,可以通过电子邮件分发给多个用户。这是我的另一个未回答的问题:。所以,我想:如果我通过Insert>Table>ExcelSpreadsheet将电子表格放在Word文档中会怎么样 以下是我尝试过的: Private Sub ComboBox1_DropButtonCli

感谢您努力回答我的另一个问题,但我已放弃尝试从Excel在Word中填充组合框。我让它工作,但问题是,当Excel文件被移动,然后Word文件被关闭并重新打开时,Comobbx不再被填充。不幸的是,这需要是一个独立的Word文档,可以通过电子邮件分发给多个用户。这是我的另一个未回答的问题:。所以,我想:如果我通过Insert>Table>ExcelSpreadsheet将电子表格放在Word文档中会怎么样

以下是我尝试过的:

Private Sub ComboBox1_DropButtonClick()
Dim oleSH As Word.OLEFormat
Dim cRows As Long
Dim i As Long
Set oleSH = ActiveDocument.InlineShapes(1).OLEFormat

  cRows = oleSH.Range("$A2:$B216").Rows.Count - oleSH.Range("$A2:$B216").Row + 1
  ComboBox1.ColumnCount = 2
  'Populate the listbox.
  With Me.ComboBox1
    For i = 2 To cRows
       'Use .AddItem property to add a new row for each record and populate column 0
      .AddItem xlWS.Range("$A1:$B216").Cells(i, 1)
      'Use .List method to populate the remaining columns
      .List(.ListCount - 1, 1) = xlWS.Range("$A1:$B216").Cells(i, 2)
    Next i
  End With
  'Clean up
  xlWB.Close True
  xlApp.Quit
  Set xlWS = Nothing
  Set xlWB = Nothing
  'Make label print column 2 of ComboBox
  With ComboBox1
        Label1.Caption = .List(.ListIndex, 1)
    End With
End Sub

但是,我得到一个编译错误:找不到方法或数据成员。Word似乎无法识别该方法。类似Excel的范围可以。我怎样才能做到这一点?提前再次感谢,如果你能回答我的其他问题,请回答!我很乐意让它以任何一种方式工作。

我从您的另一个问题中怀疑您正在创建具有后期绑定的xlWs对象,我认为这就是Word无法理解Excel范围的原因


您可能想切换到引用和早期绑定对象?

我决定使用Word.Table来存储文档中的数据,而不是嵌入的Excel对象。我最初拒绝了这个想法,因为我不知道怎么做。我只能在一个单独的文档中找到Greg Maxey从Word.Table填充的代码。可以向下滚动到“外部数据源:Word表”部分找到相关代码


然而,经过大量的修补,我发现要从Word.Table中填充与正在填充的ComboBox相同的文档中的ComboBox,只需稍微修改Maxey的代码即可。只需更改Set sourcedoc=Documents.OpenFileName:=D:\Data Stores\sourceWord.doc,Visible:=False以设置sourcedoc=Me并删除行sourcedoc.Close SaveChanges:=wdDoNotSaveChanges,这样所使用的文档就不会被关闭。

我很确定您需要为嵌入的电子表格获取一个excel对象。@Tripkinetics尝试过它。见下文。多亏了特里普和@JulianKnight。我尝试切换到早期绑定,现在方法.Names出现了问题。我得到一个编译错误:找不到方法或数据成员。如何获取Excel的新实例以获取Word OLE表中所需的单元格范围?这是我的代码抱歉,正在与小减价抗争:私有子组合框1\u下拉按钮单击Dim xlapp作为Excel。应用程序集xlapp=New Excel。应用程序Dim xlbook作为Word.OLEFormat Dim Listarray作为变量Dim BstarApp作为布尔Dim cRows只要Dim i只要出错继续下一集xlapp=GetObject,Excel.Application If Err然后bStartApp=True Set xlapp=New Excel.Application End If On Error转到0,xlapp Set xlbook=ActiveDocument.InlineShapes1.OLEFormat Listarray=xlbook.Names$A2:$B216.ReferstorRange.Value End With,如果我使用早期绑定,该文档是否适用于尚未安装MS Excel 14.0对象库引用的用户?