本帖最后由 lzg827 于 2011-02-15 16:03:12 编辑

解决方案 »

  1.   

    range.SetComment...給單元格添加批註
    Excel_Obj.WorkSheets[1].Cells[1, 3].AddComment(Str);是否存在批註if   ExcelWS.Cells.Item[11,6].Comment   <>   nil   then 
        PZ:=ExcelWS.Cells.Item[11,6].Comment.Text(EmptyParam,EmptyParam,EmptyParam); 至於寬度和長度,你看下有沒有width\height等屬性VBA中有的,VB設定其格式如下Sub InsertComment(rMyCells As Range, sCommentTxt As String)
      With rMyCells
            '如果單元格已有批注則清除已有批注
            If Not .Comment Is Nothing Then
                .ClearComments
            End If
            '插入批注並設置其格式
            With .AddComment
                .Visible = True
                .Text Text:=sCommentTxt
            End With
            With .Comment.Shape
                With .TextFrame
                    With .Characters.Font
                        .Name = "宋體"
                        .FontStyle = "常規"
                        .Size = 9
                        .ColorIndex = 49
                    End With
                    .AutoSize = True
                End With
                .Fill.ForeColor.RGB = RGB(255, 255, 204)
                .Placement = xlMove
            End With
        End With
    End Sub
      

  2.   

    可以設置批註的長度和寬度的,VBA中有代碼,直接轉換成DELPHI的就可以了
    Sub Macro1()
    '
    ' Macro1 Macro
    ''
        Range("E9").AddComment
        Range("E9").Comment.Visible = False
        Range("E9").Comment.Text Text:= _
            "KYE:" & Chr(10) & "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
        //width
        Selection.ShapeRange.ScaleWidth 2.44, msoFalse, msoScaleFromTopLeft
        //height
        Selection.ShapeRange.ScaleHeight 2.32, msoFalse, msoScaleFromTopLeft
        Range("E9").Comment.Shape.Select True
        Range("E9").Comment.Text Text:= _
            "KYE:" & Chr(10) & "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
        Range("E9").Select
        ActiveCell.Comment.Visible = True
        Range("E9").Select
    End Sub
      

  3.   

    老大,这段代码我也找到过。
    因为用的是delphi封装的OLE操作。这个和简单的转换VB,delphi语法不是一回事啊。
    width\height这两个属性貌似没有。大侠,能帮我在本地试试吗?
    叩谢,叩谢啊~~~
      

  4.   

    自个顶。
    顺便说一个思路:
    做一个Excel模板,用VBA在里面设置批注大小。
    在Delphi中启动,问题是:如何将数据传到VBA代码中?另外,我也不太想这样做。维护VBA是非常痛苦的事情。