PasteSpecial():wdPasteOLEObject和wdInLine枚举

时间:2018-01-18 17:28:40

标签: excel vb.net vba excel-vba enumeration

我已经在Excel VBA中编写代码,目前正在尝试将其转换为VS 2017上的vb.NET。

我想在Excel中复制一个表,并将其粘贴到Word文档中,并在它们之间保持实时链接,以便Excel表中的任何更改都将传输到粘贴在Word文档中的表。我在Excel VBA中管理了这个,但是vb.NET不识别DataType:=wdPasteOLEObjectPlacement:=wdInLine,说它们没有被声明。

以下是我的代码中的示例:

excelApp = New Excel.Application
excelWB = excelApp.Workbooks.Open(SurveyFormLoc)
excelApp.Visible = True

With excelApp
    .Sheets("Site Details").Select 
    .Range("B2:I11").Copy()
End With

wdApp = CreateObject("Word.Application")
wdApp.Visible = True
wdDoc = wdApp.Documents.Open(DesignReportLoc)

With wdDoc
    .Application.Selection.Find.Text = "INSERT FROM SURVEY FORM"
    .Application.Selection.Find.Execute()
    .Application.Selection.ParagraphFormat.Alignment = 0               
End With

wdApp.Selection.PasteSpecial(Link:=True, DataType:=wdPasteOLEObject, Placement:=wdInLine, DisplayAsIcon:=False)

有人知道vb.NET的等价物是做什么的吗?

1 个答案:

答案 0 :(得分:2)

wdPasteOLEObject替换为数字0。

wdInLine替换为数字0。

PasteDataType Enumeration

Placement Enumeration

如果您想保留可读性,也可以自己定义Enumeration

Enum WdOLEPlacement 
  wdFloatOverText = 1
  wdInLine = 0 
End Enum

Enum WdPasteDataType 
  wdPasteBitmap = 4 
  wdPasteDeviceIndependentBitmap = 5    
  wdPasteEnhancedMetafile = 9   
  wdPasteHTML = 10  
  wdPasteHyperlink = 7  
  wdPasteMetafilePicture = 3    
  wdPasteOLEObject = 0  
  wdPasteRTF = 1    
  wdPasteShape = 8  
  wdPasteText = 2   
End Enum

在你的代码中,像这样引用:

DataType:=WdPasteDataType.wdPasteOLEObject 
Placement:=WdOLEPlacement.wdInLine 

如果您再次遇到未定义的Enumerations,您可以直接去谷歌并粘贴您要查找的内容并添加单词Enum,这通常是第一个结果。