『壹』 如何用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
『貳』 word中使用vba按照現在圖片的順序,用新的圖片把舊圖片全部替換,圖片名稱統一由規定的
解題思路很重要,下面給出替換圖片的關鍵代碼:
Sub替換活動文檔中的第一張圖片()
ActiveDocument.InlineShapes(1).Select
Selection.InlineShapes.AddPicture"[要替換的圖片的完整路徑]"
EndSub
PS:實際使用中可以將要替換的新圖片按照 Word 文檔中的圖片出現的順序進行編號(如1.jpg、2.jpg、3.jpg...)並放入一個文件夾中,然後將上述代碼放入循環語句中並稍作修改,通過遍歷 Word 文檔中的 InlineShapes 對象同時傳遞圖片的完整路徑即可實現全部替換!
『叄』 vba批量替換word中圖片
可以用下面的代碼試一下:(注意,操作前,需要做好備份)
』把圖片統一成一種格式。(也可以統一轉成浮動的格式,代碼稍做修改即可)
For Each ishape In ActiveDocument.Shapes
ishape.ConvertToInlineShape
Next ishape
For i = 1 To ActiveDocument.InlineShapes.Count - 1
ActiveDocument.InlineShapes(i).Select
Selection.InlineShapes.AddPicture "c\" & i & ".jpg", linktofile:=False, savewithdocument:=True
Next
『肆』 關於圖片批量導入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會進入無響應狀態。圖片越多,無響應的時間越長。
『伍』 求助:如何通過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
『陸』 尋找WORD VBA高手解決WORD批量插入圖片程序的問題
Selection.Text = Basename(Fn) '這兩句移到這里
Selection.EndKey
這兩句移一下位置,其它不變。
Sub 批量插入圖片()
Dim myfile As FileDialog
Set myfile = Application.FileDialog(msoFileDialogFilePicker)
With myfile
.InitialFileName = "D:\111"
If .Show = -1 Then
For Each Fn In .SelectedItems
Selection.Text = Basename(Fn) '這兩句移到這里
Selection.EndKey
Set mypic = Selection.InlineShapes.AddPicture(FileName:=Fn, SaveWithDocument:=True)
'按比例調整相片尺寸
WidthNum = mypic.Width
c = 18 '在此處修改相片寬,單位厘米
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
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里所有圖片一次性銳化
步驟如下:
1.打開word後,選中一張圖片;
3.這樣一次性選中所有圖片後即可點擊完成銳化。