标题:VB生成Word中段落换行问题
只看楼主
sunduke
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2010-5-8
结帖率:100%
已结贴  问题点数:18 回复次数:11 
VB生成Word中段落换行问题
问题是这样的编了个计算程程序要导出到word中,paragraphs这个段落内写入内容,但是不能人为控制的换行(什么chr(13) chr(10)根本没用),
因为后面可以涉及到分节,虽然还不研究会。所以选用paragraphs这个方法,

我要在一个段落中输入多行文字,手动控制换行点,不知道有没有能控制换行的命令。十分感谢!

Dim wddoc As Word.Document
Dim wd As New Word.Application
Dim px As Word.Paragraph
wd.Documents.Add
Set wddoc = wd.ActiveDocument

Set px = wddoc.Paragraphs.Add
wddoc.Paragraphs.Item(1).Range.Bold = True
wddoc.Paragraphs.Item(1).Range.Text = "xxxxxxxx"  ''''加入 chr(13) 无用
wddoc.Paragraphs.Item(4).Range.InsertAfter "eeeeee" & "11111"   '''这个也没换行功能,加入换行chr(13)也无用。

wddoc.Paragraphs.Item(1).Alignment = wdAlignParagraphCenter
搜索更多相关主题的帖子: 研究会 Word 
2016-06-17 17:03
xiangyue0510
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:86
帖 子:934
专家分:5244
注 册:2015-8-10
得分:0 
不行么?我记得好像是之前做过的,可以啊。
现在这个电脑没有VB和VBA。真不行的话只能是在下周一去帮你看一下了
2016-06-17 19:28
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
得分:0 
这样可以看到多行的,不知道是不是你要的。
Dim wddoc As Word.Document
Dim wd As New Word.Application
Dim px As Word.Paragraph
wd.Documents.Add
Set wddoc = wd.ActiveDocument
Set px = wddoc.Paragraphs.Add
px.Range.Text = "第一行" & vbCrLf & "第二行" & vbCrLf & "第三行"
wd.Visible = True

能编个毛线衣吗?
2016-06-17 19:57
sunduke
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2010-5-8
得分:0 
回复 3楼 wmf2014
真不好意思,周末有事没来得及回复,加入VBcrlf,有的段落可以分段了,但是在段落之间加入表格或者图片什么的,vbcrlf后面的东西就会丢失掉了,不知道哪有问题,我整理下发个源码。
Desktop.rar (1.18 KB)
2016-06-20 08:07
sunduke
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2010-5-8
得分:0 
回复 楼主 sunduke
纯文本,用vbcrlf可以,加入了图片,表格就貌似不行了
2016-06-20 08:08
sunduke
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2010-5-8
得分:0 
这个段落的实现真心没搞清楚逻辑关系,也没找到相应的书籍。见下图,这样弄,乱得不行!
2016-06-20 08:22
sunduke
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2010-5-8
得分:0 
回复 6楼 sunduke
2016-06-20 08:23
ZHRXJR
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:125
帖 子:1034
专家分:5519
注 册:2016-5-10
得分:0 
wddoc.Paragraphs.Item(1).Range.Text = "xxxxxxxx"  ''''加入 chr(13) 无用
wddoc.Paragraphs.Item(4).Range.InsertAfter "eeeeee" & "11111"   '''这个也没换行功能,加入换行chr(13)也无用。

单单一个chr(13)不会换行,换行符是 & Chr(13) & Chr(10) & 的组合,这样才能换行。
我将你的程序测试了一下,加  & Chr(13) & Chr(10) & 换行符就能够换行了。
wddoc.Paragraphs.Item(1).Range.Text = "xxxxxxxx" & Chr(13) & Chr(10)
wddoc.Paragraphs.Item(2).Range.InsertAfter "eeeeee" & Chr(13) & Chr(10) & "11111"


[此贴子已经被作者于2016-6-20 10:31编辑过]


请不要选我!!!
2016-06-20 10:28
sunduke
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2010-5-8
得分:0 
回复 8楼 ZHRXJR
麻烦您用我后面截图的内容输入一下,我试了下还是不行。这个应该跟paragraphs设置的关系,跟vbcrlf,chr10 13没关系吧!都是换行的符号,名字不一样吧。
2016-06-20 13:27
ZHRXJR
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:125
帖 子:1034
专家分:5519
注 册:2016-5-10
得分:6 
回复 7楼 sunduke
你的代码有问题,在第一行放置 1a 1b 1c 1d 且有换行符,实际上是第一行是 1a,第二行是 1b,第三行是 1c,第四行是 1d
那么在放置第二行时,第二行到第五行取代为 2a 2b 2c 2d
在放置第三行时,第三行到第6行取代为 3a 3b 3c 3d
最后可能出现随机放置的问题,因此像这样:

如果这样各行放置各行的内容,就不会出错了

程序代码:
For I = 1 To 12
Select Case I
    Case 1: wddoc.Paragraphs.Item(I).Range.Text = "1a" & vbCrLf
    Case 2: wddoc.Paragraphs.Item(I).Range.Text = "1b" & vbCrLf
    Case 3: wddoc.Paragraphs.Item(I).Range.Text = "1c" & vbCrLf
    Case 4: wddoc.Paragraphs.Item(I).Range.Text = "1d" & vbCrLf
    Case 5: wddoc.Paragraphs.Item(I).Range.Text = "2a" & vbCrLf
    Case 6: wddoc.Paragraphs.Item(I).Range.Text = "2b" & vbCrLf
    Case 7: wddoc.Paragraphs.Item(I).Range.Text = "2c" & vbCrLf
    Case 8: wddoc.Paragraphs.Item(I).Range.Text = "2d" & vbCrLf
    Case 9: wddoc.Paragraphs.Item(I).Range.Text = "3a" & vbCrLf
    Case 10: wddoc.Paragraphs.Item(I).Range.Text = "3b" & vbCrLf
    Case 11: wddoc.Paragraphs.Item(I).Range.Text = "3c" & vbCrLf
    Case 12: wddoc.Paragraphs.Item(I).Range.Text = "3d" & vbCrLf
End Select
Next I

当然这不是最佳的方案,但给你提供了一个思路。

请不要选我!!!
2016-06-20 18:31



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-466051-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.276918 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved