用户登录
用户注册

分享至

wordvba图片位置

  • 作者: 我的god
  • 来源: 51数据库
  • 2020-04-21

1.word中使用vba按照现在图片的顺序,用新的图片把旧图片全部替换,

解题思路很重要,下面给出替换图片的关键代码:

Sub 替换活动文档中的第一张图片()

ActiveDocument.InlineShapes(1).Select

Selection.InlineShapes.AddPicture "[要替换的图片的完整路径]"

End Sub

PS:实际使用中可以将要替换的新图片按照 Word 文档中的图片出现的顺序进行编号(如1.jpg、2.jpg、3.jpg。)并放入一个文件夹中,然后将上述代码放入循环语句中并稍作修改,通过遍历 Word 文档中的 InlineShapes 对象同时传递图片的完整路径即可实现全部替换!

2.word vba 插入图片

Sub 批量插入图片()

Dim myfile As FileDialog

Set myfile = Application.FileDialog(msoFileDialogFilePicker)

With myfile

.InitialFileName = "E:\工作文件" ‘这里输入你要插入图片的目标文件夹

If .Show = -1 Then

For Each Fn In .SelectedItems

Selection.Text = Basename(Fn) '这两句移到这里

Selection.EndKey

If Selection.Start = ActiveDocument.Content.End - 1 Then '如光标在文末

Selection.TypeParagraph '在文末添加一空段

Else

Selection.MoveDown

End If

Set MyPic = Selection.InlineShapes.AddPicture(FileName:=Fn, SaveWithDocument:=True) '按比例调整相片尺寸

WidthNum = MyPic.Width

c = 6 '在此处修改相片宽,单位厘米

MyPic.Width = c * 28.35

MyPic.Height = (c * 28.35 / WidthNum) * MyPic.Height

If Selection.Start = ActiveDocument.Content.End - 1 Then '如光标在文末

Selection.TypeParagraph '在文末添加一空段

Else

Selection.MoveDown

End If

Next Fn

Else

End If

End With

Set myfile = Nothing

End Sub

Function Basename(FullPath) '取得文件名

Dim x, y

Dim tmpstring

tmpstring = FullPath

x = Len(FullPath)

For y = x To 1 Step -1

If Mid(FullPath, y, 1) = "\" Or _

Mid(FullPath, y, 1) = ":" Or _

Mid(FullPath, y, 1) = "/" Then

tmpstring = Mid(FullPath, y + 1)

Exit For

End If

Next

Basename = Left(tmpstring, Len(tmpstring) - 4)

End Function

执行此代码后,弹出的选择对话框, 全选目标文件夹下的所有图片文件之后,点击确定。然后静静的等待电脑完成处理工作,次数word会进入无响应状态。图片越多,无响应的时间越长。

3.在word中如何用VBA实现插入多张图片

要从两个方面考虑:

1、如何把现有文档中的图片导出?这个代码片断可以参考一下:

Set ImageStream = CreateObject("ADODB.Stream")

With ImageStream

.Type = 1

.Open

.Write ActiveDocument.InlineShapes(1).Range.EnhMetaFileBits

.SaveToFile "d:\Temp\Output.bmp"

.Close

End With

Set ImageStream = Nothing

2、如何把已经到处的图片导入到新文档中?这个函数调用可以参考一下:

ActiveDocument.InlineShapes.AddPicture

如果还是不明白的话,请补充提问。

_____

补充:

请问楼主你运行那个代码片断得到的*完整*错误信息是什么?报错的时候,系统一般会把光标移动到出错的那行代码上,你看到的是哪一行代码出错呢?

我看你贴上来的代码应该是没有什么语法上的错误,“Exit For”的确是不应该要的,但那也不是语法错误啊。

转载请注明出处51数据库 » wordvba图片位置

软件
前端设计
程序设计
Java相关