通过.NET与Word交互

通过.NET与Word交互,.net,matlab,ms-word,ms-office,office-interop,.net,Matlab,Ms Word,Ms Office,Office Interop,经过几分钟的实验,我回答了自己的问题(见下文)。我会在两天内接受这个答案 我正在使用MATLAB的.NET功能创建Word文档。我想创建一个表并合并左侧列中顶部的两个单元格。到目前为止,我可以创建表: NET.addAssembly('microsoft.office.interop.word'); %# Register Word assembly wordApp = Microsoft.Office.Interop.Word.ApplicationClass; %# Cre

经过几分钟的实验,我回答了自己的问题(见下文)。我会在两天内接受这个答案


我正在使用MATLAB的.NET功能创建Word文档。我想创建一个表并合并左侧列中顶部的两个单元格。到目前为止,我可以创建表:

NET.addAssembly('microsoft.office.interop.word');         %# Register Word assembly
wordApp = Microsoft.Office.Interop.Word.ApplicationClass; %# Create an instance of Word
wordDoc = wordApp.Documents;                              %# Get the object that handles documents
newDoc = wordDoc.Add;                                     %# Add a new document
wordApp.Visible = 1;                                      %# Make Word visible
selection = wordApp.Selection;                            %# Get the selection object to manage selected area
table = newDoc.Tables.Add(selection.Range, 3, 5);         %# Create a table
table.Style = 'Table Grid';                               %# Add grid lines
调用
selection.MoveDown
方法时遇到问题。在此方法上运行表示以下输入参数:

  • Microsoft.Office.Word.Windows选择此选项
  • 系统对象单位
  • 系统。对象计数
  • 对象扩展
这表明Unit参数是一个WdUnits枚举,我在MATLAB中的Microsoft.Office.Interop.Word.WdUnits.wdCell中找到了它

我的问题是找不到Extend参数所需的WdMovementType枚举。我想使用wdExtend值,但找不到它。根据需要,它应该位于Microsoft.Office.Interop.Word.WdMovementType有人能告诉我在哪里可以找到wdExtend吗?

编辑

WdMovementType确实存在于它应该存在的地方,即Microsoft.Office.Interop.Word.WdMovementType。现在,我在尝试运行MoveDown方法时遇到一个错误:

>> selection.MoveDown(Microsoft.Office.Interop.Word.WdUnits.wdCell, 1, Microsoft.Office.Interop.Word.WdMovementType.wdExtend); ??? Message: Bad parameter Source: Microsoft Word HelpLink: C:\Program Files (x86)\Microsoft Office\Office12\1033\WDMAIN11.CHM#36888
我建议您下载Word 2010的最新组件。 你可以从

我建议您下载Word 2010的最新组件。 你可以从

我使用以下方法检查Word assembly中的枚举:

>> word = NET.addAssembly('microsoft.office.interop.word'); >> word.Enums
所以我想我会尝试访问它,即使它没有出现在MATLAB的制表符中。奇怪的是,在访问它之后,它现在出现了!我想它一直都在那里。

我使用以下方法检查Word assembly中的枚举:

>> word = NET.addAssembly('microsoft.office.interop.word'); >> word.Enums
所以我想我会尝试访问它,即使它没有出现在MATLAB的制表符中。奇怪的是,在访问它之后,它现在出现了!我想它一直就在那里。

我不知道你的意思。我有单词assembly(参见问题中代码示例的第一行)。问题是我在其中找不到WdMovementType枚举。我需要不同的程序集吗?你有什么版本的程序集?我建议你下载2010这个词的最新版本。我不知道你的意思。我有单词assembly(参见问题中代码示例的第一行)。问题是我在其中找不到WdMovementType枚举。我需要不同的程序集吗?你有什么版本的程序集?我建议您下载Word 2010的最新版本。您运行的是哪个版本的Matlab?调用MoveDown的确切语法是什么,以及您得到的确切错误消息是什么?@Andrew Janke-我使用的是R2011a。我在上面的问题中添加了我正在使用的MoveDown语法和产生的错误消息。您正在运行哪个版本的Matlab?您用来调用MoveDown的确切语法是什么,以及您得到的确切错误消息是什么?@Andrew Janke-我正在使用R2011a。我在上面的问题中添加了我正在使用的MoveDown语法和由此产生的错误消息。
 'Microsoft.Office.Interop.Word.WdMovementType'