在32位办公室的Win 7 64位上运行32位VB应用程序时,一切正常。当使用64位Office(特别是Word)运行时,大多数代码都可以正常工作,但Word.selection类的.Paste方法失败并显示“此命令不可用”。用户可以在此时使用ctrl-V粘贴内容。如何更改VB代码以支持32位和64位Word?
oWorkDoc = oWord.Documents.Open(filename, , True, False)
oWord.Selection.Copy()
cell.Select() <--- refers to cell in table in another document
Try
oWord.Selection.Paste() <--- failing statement
Catch ex As Exception
oWord.Visible = True
MsgBox(ex.Message)
End Try
更新:用户未使用Office 64位。他正在使用32位。所以神秘感变浓了。此外,代码序列用于应用程序的其他部分,并且工作正常。此外,Try / Catch块已更改为忽略异常并且正在执行粘贴操作。
答案 0 :(得分:0)
...包括表格单元格的选择也可以导致 不可预测的行为。信息属性将告诉您是否 选择在表格内。
因为Range对象共享许多与之相同的方法和属性 使用Range对象的选择对象更适合于操作 没有理由在物理上改变电流的文件 选择。 资料来源:Selection interface - Remarks
我建议尽可能避免使用Selection
对象。而是使用适当类型的类型引用;在这种情况下是Word.Range
。 Copy
和Paste
是Word.Range
对象上的方法,应该在有效引用上可用。假设cell
是Word.Cell
对象引用,请使用其Range
属性。
所以而不是:
cell.Select() <--- refers to cell in table in another document
oWord.Selection.Paste() <--- failing statement
使用:
cell.Range.Paste