【问题标题】:Is it possible to pass a variable from MS Word to Excel with VBA?是否可以使用 VBA 将变量从 MS Word 传递到 Excel?
【发布时间】:2020-07-06 21:20:38
【问题描述】:

我有一种情况,我需要通过宏将变量从 Word 传递到 Excel。推理有点复杂,但基本上我想以此作为创建自定义索引的一种方式。我指出,以防可能有更简单的方法来创建索引。此特定索引是根据在其中找到单词或短语的段落而不是页码创建的。在 Word 中似乎没有办法做到这一点。

所以,我想突出显示单词或短语,按我的宏组合(或添加右键单击菜单项来执行此操作)将突出显示的文本分配给一个变量,然后将其发送到三个打开的​​工作表之一(那里将是索引的 3 个部分)并将其添加到电子表格的底行。从那里我需要按字母顺序排列列表并将所有相同的短语合并到一个单元格中。

我知道如何将项目从 Excel 发送到 Word,但是当我尝试研究从 Word 发送到 Excel 的想法时,我只能找到 Excel 从 Word 中检索某些内容并将其返回到 Excel 的示例。这不适用于我正在做的事情。将有数千个索引条目(在我合并它们之前)。

如果不能直接从 Word 转到 Excel,那么我想我可以将选定的文本发送到另一个文档,但我还是不知道该怎么做。

请帮忙!

【问题讨论】:

  • 您可以在 Word 中使用 Excel 引用实现您想要的目标,而无需使用变量。为什么要在不需要时使用变量?
  • 这可能解释了为什么你找不到如何做的例子——它不像你想象的那样工作。
  • @braX 如果您的意思是设置对 Excel 单元格的显式引用,那么这是不切实际的。到我完成对该文档的索引时,将有大约 20,000 个索引条目。然后我需要回去整理它们,将其减少到总数的 20% 左右。手动方法是在我面前打印我的草稿 Word,并打开 3 个 Excel 电子表格。我在适当的 wksht 中手动键入索引条目。必须设置显式引用会使当前的苦差事变得更糟。如果我误解你,请解释。我正在尝试更快地完成手动任务。
  • @braX 每个条目也没有不同的变量。它只是我从 Word 发送到 Excel 的每个条目的一个临时变量。每次向 Excel 发送新条目时,该变量都会重置为我用鼠标突出显示的文本。
  • 也不需要显式引用。您只需从 Word 动态控制 Excel 电子表格,就像它们都是同一程序的一部分一样。您可以在 Word 中编写代码,在 Excel 电子表格中搜索空行、对其进行排序、执行 Excel 可以自行执行的任何操作。

标签: excel vba ms-word


【解决方案1】:

我不明白您为什么需要从 Word 中使用 Excel,但我准备了一段代码来向您展示如何(轻松)访问 Excel 对象并使用其对象:

Sub testWorkingInExcel()
 Dim objEx As Excel.Application, wb As Excel.Workbook, W As Excel.Workbook, sh As Excel.Worksheet
 Dim lastEmptyRow As Long, boolFound As Boolean
 
 On Error Resume Next
 Set objEx = GetObject(, "Excel.Application") 'find Excel open session if any
  If Err.Number <> 0 Then
    Err.Clear: On Error GoTo 0
    Set objEx = CreateObject("Excel.Application")
    Set wb = objEx.Workbooks.Open("Workbook full name")
  Else
    For Each W In objEx.Workbooks
        If W.Name = "Needed workbook" Then
            Set wb = W: boolFound = True: Exit Sub
        End If
    Next
    If Not boolFound Then Set wb = objEx.Workbooks.Open("Workbook full name")
  End If
 On Error GoTo 0
 Set sh = wb.Worksheets("NeededSheet")
 lastEmptyRow = sh.Range("A" & sh.Rows.Count).End(xlUp).Row
 'Now, you have the last empty row of the needed page and you can do
 'whatever you could do directly in Excel...
End Sub

【讨论】:

  • 我想我知道这将如何工作。我可能需要一天左右的时间来尝试一下,所以我可能会有另一个问题的答复。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多