兄弟用vb对word对象操作,想用vba得到一个word文档的段落有没有项目编号,是哪种类型的(在论坛搜索有人问过,没有答复就结贴了郁闷)?
录过宏,太复杂找不到想用的属性.
那哥哥指点一下,推荐个好书,好站点也非常感谢

解决方案 »

  1.   

    VBA的书到有,不过似乎都不够丰富
      

  2.   

    检查range对象的ListFormat子对象的ListType属性,如:    Select Case Selection.Range.ListFormat.ListType
        Case WdListType.wdListBullet
            MsgBox "Bullet"
        Case WdListType.wdListNoNumbering
            MsgBox "No numbering"
        case ...
        End Select
      

  3.   

    按楼上大哥的方法项目符号有无可以区分,其它符号和picture可以区分,剩下的"圆点"、"方点"、"菱形"等符号返回是一样的都是“bullet”,请帮我看看代码那里改一下,以下是我用vb写的代码:
    Dim wr As New Word.Application
    wr.Documents.Open (App.Path & "\WDA10_84.DOC")
    wr.Selection.WholeStory
    'Debug.Print wr.Selection.Range.ListFormat.
       Select Case wr.Selection.Range.ListFormat.ListType
        Case WdListType.wdListBullet
            MsgBox "Bullet"
        Case WdListType.wdListNoNumbering
            MsgBox "No numbering"
        Case WdListType.wdListListNumOnly
            MsgBox "numonly"
        Case WdListType.wdListMixedNumbering
            MsgBox "mixednum"
        Case WdListType.wdListOutlineNumbering
            MsgBox "outline"
        Case WdListType.wdListPictureBullet
            MsgBox "picture"
        Case WdListType.wdListSimpleNumbering
            MsgBox "Simple"
        Case Else
            MsgBox "haha"
        End Select
    Dim a As String
    a = wr.Selection.Range.ListFormat.ListType
    Debug.Print a
    wr.Application.Quit
    Set wr = Nothing
      

  4.   

    上msdn站点查吧,基本都有例子的
      

  5.   

    看下面的例子    Dim i As Integer
        
        Set objDoc = GetObject("c:\1.doc")
        objDoc.Activate    '项目符号;
        For i = 1 To objDoc.Paragraphs.Count
            If objDoc.Paragraphs(i).Range.ListFormat.ListType <> 0 Then
                MsgBox "第" & i & " 段有项目符号"
            End If
        Next i
        
        objDoc.Close
        Set objDoc = Nothing
      

  6.   

    ...
         Case WdListType.wdListBullet
            Dim lngCodePoint As Long
            lngCodePoint = AscW(wr.selection.Range.ListFormat.ListTemplate.ListLevels(wr.selection.Range.ListFormat.ListLevelNumber).NumberFormat) And &HFFF
            Select Case lngCodePoint
            Case 183
                MsgBox "圆点"
            Case 111
                MsgBox "圆圈"
            Case 167
                MsgBox "方块"
            Case Else
                MsgBox "字符unicode代码:" & CStr(lngCodePoint)
            End Select
        ...
      

  7.   

    谢谢搞定!
    不过我的机器上得到unicode值你上面演示的不同,“圆点”108 ,您上面是假定还是不同的word库有不同的数字?
      

  8.   

    你作这个我本来觉得是没什么意义的。因为同样看起来是圆点,可以是不同的字体,不同的unicode字符。上面是在英文系统上试的。在中文里内置的圆点项目符号是108。你自己可以查看:
    1)Word菜单:格式->项目符号和编号-〉选中要查的项目符号
    2)点“自定义”,然后点“字符”
      

  9.   

    谢了,拜你为师吧!太厉害了!我刚开始做很多方面都要学习,经常来csdn发现自己太菜了!拜师学艺吧!有人说:一个人的财富是你十个最亲近朋友的平均值。是不是知识也是这样,多认识几位高手我也就升级了,哈哈
      

  10.   

    不必客气。看你本身基础不错,多看看VBA自带的帮助就基本上什么都可以搞定了。
      

  11.   

    谢谢夸奖!
    我用VB才半年时间,以前用Intouch挺好用的(就是不太常见找不到工作),出意外丢了工作才开始用vb,vba刚开始学,上面的东西都是靠录制宏搞得到的,给你以假象,其实很菜。
    大哥就送人送到家吧!(哈哈,有点得寸进尺!不过在学进度又有问题。有劳)
    怎么能知道word 或 excel的那个range进行了合并单元格命令?
    我在用select方法选择有合并动作的单元格时会报错,虽然错误处理勉强可以判断但肯定速度太慢!
    望指教!
    我是北京大兴人,大家交个朋友吧
    [email protected]
    qq33288179 不过忙得没时间上,哈哈
      

  12.   

    分数没关系。关于合并单元格:我对Excel不熟。在Word里据我所知没有可靠的办法可以检测,最简单的办法是你所说错误处理,对速度应该影响不大。