如何使用Interop将标签写入Excel对象属性?

我正在转换一些使用Excel的vb.net代码来使用MS提供的Excel interop(版本14)。 我成功地转换了大量的代码,但是我最后一个问题是,我无法设置Excel表单标签标题文本。 我正在使用形状而不是图片,我试图做与Shapes.AddLabel一样,但我不能做到这一点。

这是我使用COM对象的旧代码

With ExcelObject .ActiveSheet.OLEObjects.Add(ClassType:="Forms.Label.1", Link:=False, DisplayAsIcon:=False, Left:=iTempLeft, Top:=iTempTop, Width:=iTempWidth, Height:=iTempHeight).Select() iLabels = iLabels + 1 sLabelName = "Label" & CStr(iLabels) .ActiveSheet.OLEObjects(sLabelName).object.Caption = gudtDrawingAndDefectXYsForPrint(iDrawing).sDrawingName .ActiveSheet.OLEObjects(sLabelName).Placement = Microsoft.Office.Interop.Excel.XlPlacement.xlMoveAndSize End With 

现在,这是我尝试使用Interop的更新代码

 With ExcelObject CType(.ActiveSheet, Excel.Worksheet).Shapes.AddLabel(Microsoft.Office.Core.MsoTextOrientation.msoTextOrientationHorizontal, iTempLeft, iTempTop, iTempWidth, iTempHeight).Name = sLabelName CType(.ActiveSheet, Excel.Worksheet).Shapes.Item(sLabelName).Placement = Excel.XlPlacement.xlMoveAndSize CType(.ActiveSheet, Excel.Worksheet).Shapes.Item(sLabelName).Title = gudtDrawingAndDefectXYsForPrint(iDrawing).sDrawingName End Width 

标题将不会在屏幕上显示为“标题”使用COM对象。

这对我有用。 ( 在VS 2010 Ultimate + Office 2010中进行testing

ACTIVEX控件

  Dim xlApp As New Excel.Application Dim xlWb As Excel.Workbook Dim xlsheet As Excel.Worksheet Dim oleObj As Excel.OLEObject With xlApp .Visible = True xlWb = .Workbooks.Add xlsheet = xlWb.Sheets("Sheet1") With xlsheet oleObj = .OLEObjects.Add(ClassType:="Forms.Label.1", Link:=False, DisplayAsIcon:=False, Left:=200, Top:=100, Width:=100, Height:=35) oleObj.Object.caption = "Sid" End With End With 

FORM控制

  Dim xlApp As New Excel.Application Dim xlWb As Excel.Workbook Dim xlsheet As Excel.Worksheet Dim Shp As Excel.Shape With xlApp .Visible = True xlWb = .Workbooks.Add xlsheet = xlWb.Sheets("Sheet1") With xlsheet Shp = .Shapes.AddLabel(Microsoft.Office.Core.MsoTextOrientation.msoTextOrientationHorizontal, 513, 128, 90, 27) Shp.TextFrame2.TextRange.Text = "Sid" End With End With