zghwelcome 发表于 2016-12-13 16:45:39

【已解决】求教WORD如何批量按顺序添加图片到指定页?

本帖最后由 zghwelcome 于 2016-12-13 20:28 编辑

@kevinch

请教K大个word的问题,谢谢!
当前目录有 1.jpg 2.jpg 3.jpg ... 10.jpg10张图片,
请问如何建立一个新的word文档,把图片按顺序插入到 word的 1-10页,并且在每个图片后面加入一段文字,如下:
第一页内容:

这是图片1

第2页内容:

这是图片2

...

第10页内容:

这是图片10

需求效果示例:

kevinch 发表于 2016-12-13 20:03:47

$word=ObjCreate("word.application")
$word.visible=True
$doc=$word.documents.add
;$doc.saveas(@ScriptDir&"\test.doc")
With $doc.application.selection
        For $n=1 To 10
                $fn=@ScriptDir&"\"&$n&".jpg"
                If FileExists($fn) Then
                        .inlineshapes.addpicture($fn,false,true)
                        .endkey(6)
                        .typeparagrah
                        .typetext("这是第"&$n&"张图片"&@CRLF)
                        .insertbreak(0)
                EndIf
        Next
EndWith测试代码,楼主试一下

kevinch 发表于 2016-12-13 20:08:36

$word=ObjCreate("word.application") ;创建word进程
$word.visible=True;进程界面可见
$doc=$word.documents.add;添加一个新文档
;$doc.saveas(@ScriptDir&"\test.doc") ;保存文档
With $doc.application.selection
        For $n=1 To 10
                $fn=@ScriptDir&"\"&$n&".jpg"
                If FileExists($fn) Then
                        .inlineshapes.addpicture($fn,false,true) ;插入图片,第二个参数是指是否插入链接,第三个参数是是否同文档一同保存
                        .endkey(6) ;跳到文档最后
                        .typeparagrah ;添加一个回车换行符,这句也可以取消,下一句代码前增加一个@crlf即可
                        .typetext("这是第"&$n&"张图片"&@CRLF) ;在当前光标位置录入文字
                        .insertbreak(0) ;插入一个分页符
                EndIf
        Next
EndWith注释一下,方便理解

zghwelcome 发表于 2016-12-13 20:25:40

回复 3# kevinch


    谢谢K大的帮助!

kk_lee69 发表于 2016-12-13 20:26:54

回复 4# zghwelcome

老話一句   kevinch是 VBA 的權威 呵呵

zghwelcome 发表于 2016-12-13 20:48:56

回复 5# kk_lee69


    是啊,崇拜了{:face (411):}

zghwelcome 发表于 2016-12-13 20:57:11

回复 3# kevinch


    K大,再请教一个问题, 之前建立的 10页文档,能否实现1-10页中任意取一页的内容到粘贴板呢?就是包括图片和文字信息到粘贴板
我在第一页用宏录制的如下,不知道这个页数是怎么选的啊
Sub Macro1()
    Selection.MoveUp Unit:=wdLine, Count:=4, Extend:=wdExtend
    Selection.Copy
End Sub

kevinch 发表于 2016-12-13 21:52:58

以复制第二页为例with $doc.application.selection
.goto(1,1,2) ;跳到第二页
$start=.range.start;记住第二页的起始位置
.goto(1,1,3) ;跳到第三页
$doc.range($start,.range.start-1).copy;根据第二页的起始位置及第三页的起始位置定位第二页内容进行复制
end with
以上代码,供大家参考

macran 发表于 2016-12-14 10:07:29

请问 K大,怎么让插入的图片和文字都居中显示呢?

kevinch 发表于 2016-12-14 19:49:12

回复 9# macran
inlineshapes.addpicture和typetext后面加一句
.paragraphformat.alignment=1;0左对齐,1居中,2右对齐

macran 发表于 2016-12-15 17:36:40

谢谢K大,
开始我按照你说的在插入以后添加
.paragraphformat.alignment=1
发现第一页不能居中,后面页的可以居中。
后来我干脆把 .paragraphformat.alignment=1 放在插入图片和内容之前。问题解决了。

resethdd 发表于 2018-12-24 13:20:58

谢谢,受教了
页: [1]
查看完整版本: 【已解决】求教WORD如何批量按顺序添加图片到指定页?