A. 如何用VBA中获取word文档中的图片
于图片来说,,分为二种的,,
第一种:是Shape对象(Word中自带的“自选图形”)
第二种:是InlineShape对象(嵌入式图片,也就是所谓的通过点击菜单栏中的“插入”->“图片”->“来自文件”)
-------------------
如何判断word文档中是否存在一张图片呢?这个问题。
我来解答:判断word文档中是否存在一张图片,可以通过看一看word文档中的inlineshape对象的数量来判断。
举例:
Dim doc As Document '当前打开的文档对象Document
Dim MyApp As Word.Application 'Word应用程序对象
Dim MyFileName As String '当前打开的文件名
MyFileName="c;\aaa.doc" '此处可以改成你的文件名字
Set MyApp = CreateObject("Word.Application")
Set doc = MyApp.Documents.Open(MyFileName)
If doc.InlineShapes.Count <> 0 then
msgbox "有嵌入式图片存在!"
Else
msgbox "没有嵌入式图片存在!"
End if
-------------------------------------------------------
如果你非要想知道,用户到底是不是插入了你要求的图片的话,你要必须要再他进行插入图片操作时进行控制,也就是说,你必须把用户所插入的图片的(绝对地址)或者(图片名字)添加到用户所插入图片的“可选文字”中记录下来。
MydocInlineShapes.AddPicture(FileName, LinkToFile, SaveWithDocument, Range)
FileName String 类型,必需。指定要创建对象的文件名。如果忽略本参数,则使用当前文件夹。
LinkToFile Variant 类型,可选。如果此属性设置为 True,则将 OLE 对象与创建该对象的文件链接。如果设置为 False,则令该 OLE 对象成为该文件的独立副本。默认值为 False。
SaveWithDocument Variant 类型,可选。如果此属性为 True,则将链接的图片与文档一起保存。默认值为 False。
Range Variant 类型,可选。指定一个区域,OLE 对象放置在该区域的文字中。如果该区域未折叠,那么图片将覆盖该区域。如果忽略此参数,则自动放置图片。
ActiveDocument.Shapes.AddPicture "C:\stone.bmp",True, True,MyRange
ActiveDocument.InlineShapes(ID).AlternativeText = App.Path & "\temp" & shapeII & ".bmp" '添加“可选文字”
B. 如何用vba取得一个word文件中的所有的图片
提供网上示例代码供参考(此代码的思路是遍历 word 文档中的 Shapes ,缩放到原始图片尺寸,再转粘贴到 Excel 中,借用 Excel 的 ChartObjects 提供的导出功能实现图片原样导出):
Subtest()
Rem工具--引用--勾选MicrosoftExcelx.xObjectLibrary..
DimmyshapeAsObject,ExcelAppAsNewExcel.Application
DimExcelAsWorkbook,i%,z%
SetExcel=ExcelApp.Workbooks.Add
.InlineShapes
Ifmyshape.Type=3Then
i=i+1
myshape.Select
Setmyshape=myshape.ConvertToShape
Rem以下代码将图片以原始比例展示
Withmyshape
.ScaleHeight1,True,msoScaleFromMiddle
.ScaleWidth1,True,msoScaleFromMiddle
EndWith
Selection.Copy
WithExcel.ActiveSheet.ChartObjects.Add(0,0,myshape.Width,myshape.Height).Chart
.Paste
.ExportActiveDocument.Path&""&i&".png"
.Parent.Delete
EndWith
EndIf
Next
Excel.CloseFalse
ExcelApp.Quit
EndSub
C. 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会进入无响应状态。图片越多,无响应的时间越长。
D. 如何运用vba将指定图片插入word中
例如,新建一个4行1列的表格,然后在Cell(3, 1)内插入图片:
Sub Macro1()
Dim mysel
mysel = ActiveDocument.Tables(1).Cell(3, 1)
mysel.InlineShapes.AddPicture FileName:="C:\a.jpg", LinkToFile:=True, SaveWithDocument:=True
End Sub
E. vba怎么控制word图片的间距
首先,正常插入图片的时候,默认图片在文档中会占据一整行。
这个时候,要改变文本与图片的距离,就要用到段落调整了。
将光标移动到图片旁,单击鼠标右键,选中“段落”选项。
在段落设置栏中,可以通过改变图片所在行的“段前”和“段后”距离,以改变文本和图片的间距。
也可以单击选中图片,右键选择“自动换行”选项中的不同图片模式以改变图片和文本的位置关系。
F. 求助:如何通过VBA批量选中word文档里的嵌入型图片或表格
提供示例代码供参考:
SubBatEditPic()
DimShapesCountAsInteger
DimiAsInteger
ShapesCount=ActiveDocument.InlineShapes.Count
Fori=1ToShapesCount
WithActiveDocument.InlineShapes(i)
'修改图片边框
With.Borders(wdBorderTop)
.LineStyle=wdLineStyleSingle
.LineWidth=wdLineWidth050pt
EndWith
With.Borders(wdBorderBottom)
.LineStyle=wdLineStyleSingle
.LineWidth=wdLineWidth050pt
EndWith
With.Borders(wdBorderLeft)
.LineStyle=wdLineStyleSingle
.LineWidth=wdLineWidth050pt
EndWith
With.Borders(wdBorderRight)
.LineStyle=wdLineStyleSingle
.LineWidth=wdLineWidth050pt
EndWith
EndWith
Nexti
EndSub
G. 在word中用VBA挑选图片所在的页码
Sub test()
For Each i In ActiveDocument.InlineShapes
i.Select
MsgBox Selection.Information(wdActiveEndPageNumber)
Next
End Sub
H. 利用VBA如何将批量图片导入WORD的指定表格格式里
将excel表格中的数据批量插入到word中的操作方法:
1、单击插入----对象按钮;
2、弹出插入对话框对话框,选择由文件创建对话框,单击浏览按钮;
3、弹出浏览对话框,选择需要插入有Excel文件;
4、单击插入按钮即可。
注:
(1)若选中链接到文件,源文件修改,Word中的表格也随之改变;
(2)若选中显示为图片,则以图标的形式插入到Word,双击可以打开其源文件。
I. 关于用宏(vba)在word中插入指定图片并保存在与图片名字相同的word中
给你一条思路吧。
第一,打开word文件,用录制宏录一段插入图片的代码(这里注意代码的路径和图片名);再录一段保存文件到A目录的代码。备用;
第二,新建一个excel文件,将你A1到A3文件夹里需要建文件的人名全部列到excel的某一列中;
第三,在excel里写vba代码,循环执行这些人名,每个人名都有新建、插入图片、保存这个过程(这里会用到第一步录到的代码)。
请自己尝试学习并应用!