麻烦粘贴一个Word方程到Excel中

我想从Word中粘贴方程式到Excel 2007中。下面的Excel VBA代码实现了这一点:

Sub ExpandEqn(MyText As String) Dim appWd As Word.Application Dim docWd As Word.Document Dim objRange As Word.Range Dim objEq As OMath Set FindActiveCell = Application.ActiveCell GetRange = CStr(FindActiveCell.Address()) ActiveCell.Offset(1, 0).Activate NextActiveCell = CStr(FindActiveCell.Address()) Set appWd = CreateObject("Word.Application") appWd.Visible = False Set docWd = appWd.Documents.Add Set objRange = docWd.Application.Selection.Range objRange.Text = MyText docWd.Application.Selection.OMaths.Add objRange docWd.Application.Selection.OMaths.BuildUp docWd.Application.Selection.WholeStory docWd.Application.Selection.Copy Range(NextActiveCell).Select ActiveSheet.PasteSpecial Format:="Picture (Enhanced Metafile)",Link:=False,DisplayAsIcon:=False appWd.Quit (False) Set docWd = Nothing Set appWd = Nothing End Sub 

不幸的是,粘贴的公式是有很多空白空间的Word文档的宽度

在这里输入图像说明

有没有方法粘贴在没有空间的方程式? 它工作正常,如果图像粘贴为位图,但我需要它是一个增强的图元文件。

非常感谢和最好的祝愿。

好的,在我和你讨论之后,我更了解你想要什么。 我相信这应该解决这个问题。 谢谢你的耐心。

 Sub ExpandEqn(MyText As String) Dim appWd As Word.Application Dim docWd As Word.Document Dim objRange As Word.Range Dim objEq As OMath Dim FindActiveCell As Range Dim intColumnWidth As Integer Dim intRowHeight As Integer Set FindActiveCell = Application.ActiveCell GetRange = CStr(FindActiveCell.Address()) ActiveCell.Offset(1, 0).Activate NextActiveCell = CStr(FindActiveCell.Address()) Set appWd = CreateObject("Word.Application") appWd.Visible = False Set docWd = appWd.Documents.Add Set objRange = docWd.Application.Selection.Range objRange.Text = MyText docWd.Application.Selection.OMaths.Add objRange docWd.Application.Selection.OMaths.BuildUp docWd.Application.Selection.WholeStory docWd.Application.Selection.Copy ActiveCell.Offset(1, 0).Activate NextActiveCell = CStr(FindActiveCell.Address()) Range(NextActiveCell).Select intColumnWidth = Range(NextActiveCell).ColumnWidth intRowHeight = Range(NextActiveCell).RowHeight docWd.Application.Selection.Columns.Width = intColumnWidth docWd.Application.Selection.Rows.Height = intRowHeight ActiveSheet.PasteSpecial Format:="Picture (Enhanced Metafile)", Link:=False, DisplayAsIcon:=False End Sub 

基本上我在这里做的是在粘贴项目然后执行粘贴之前单元格的当前宽度和高度。 然后将粘贴的对象与您粘贴的单元格大小相同。

我有一个解决scheme – 但它是非常可怕的:

  • 在Word中创build公式并将其复制到剪贴板。
  • 将它作为位图粘贴到Excel中,工作正常 – 没有额外的空间。
  • 获取位图的宽度,然后删除它。
  • 回到Word中,调整边界的宽度并重新复制公式。
  • 回到Excel中,粘贴为增强型图元文件

这可以通过编程来完成,但必须有更好的方法!