我现在想实现如下功能,比如我用vb向word中输出了下面一段文本:
1.今日新闻
1.1上海新闻
************
……
1.2北京新闻
**************
……
1.3 *****
……
2.财经信息
2.1香港股市
**********
…。
上述内容是用函数生成直接用VB控制word生成word格式的文本。我现在想在输出的同时,用vb控制word现实自动排版。
比如标题符为1.(标题)的为24磅楷体,1.1(1.2,1.3)为18磅宋体。
可能大家或说用这样的代码设置:
Set myRange = NewDoc.Paragraphs(1).Range
With myRange.Font
.Bold = True
.Name = "楷体"
.Size = 24
End With
…………
但是由于输出的内容不确定,比如到了“2.财经信息”这一段是就知道是第几段啦,所以不好设置。
我的思路是输出时都有标题,如1,1.1,1.1.1,2,2.1,2.1.2等等。能不能设置的时候按标题来设置
比如Like "(#)*"1的为24磅楷体,Like "#.#*"为18磅宋体,依次类推。这个该如何操作,请大家帮帮忙,万分感谢!
此外可能有朋友说用模板,因为我的文本内容是用函数一次输出,没法定义标签,所以,模板好像一解决不了!

解决方案 »

  1.   

    不是很好解决的?直接查标题上的数字不就得了,用ASC得到每一个字符,判断是否数字和.,如果是返回,不是,停止取文本,然后用 SPLIT 分隔,然后用 UBOUND 就可以知道到第几层了。
      

  2.   

    哈哈,刚通过不断的调试,上面的问题有了突破性的进展,把代码贡献如下:
    For Each i In ActiveDocument.Paragraphs
    If i.Range Like "#*" = True Then
     With i.Range.Font
    .Bold = True
    .Name = "楷体"
    .Size = 24
    End With
    但现在面临另外一个问题。就是我想排版从第3页开始,或者第i页。因为前几页是封面和目录,这个该怎么控制,请求达人们进一步给予帮助,解决就付分!万分感谢!
      

  3.   

    function GetStr(byval s)
    dim i
    for i=1 to len(s)
    if (asc(mid(s,i,1))>=asc("0") and asc(mid(s,i,1))<=asc("9")) or asc(mid(s,i,1))=asc(".") then
    GetStr = GetStr & mid(s,i,1)
    end if
    next
    end function
    function GetLay(byval s)
    getlay=ubound(split(s,"."))+1
    end functionmsgbox getlay(getstr("323.2.23.2数字"))