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代碼,循環執行這些人名,每個人名都有新建、插入圖片、保存這個過程(這里會用到第一步錄到的代碼)。
請自己嘗試學習並應用!