本帖最后由 梧叶沙沙 于 2019-11-6 13:08 编辑
自己遇到的一些实际例子,分享给大家。很多代码也是从论坛学习来的。
例子很基础,希望能抛砖引玉
Excel与Word图片的交互(批量导出Word图片)
Word VBA中的常用对象及一些常用代码:
①Excel读取Word数据的框架:
- Sub 打开Word()
- Set doc = CreateObject("word.application")
- f = Dir(ThisWorkbook.Path & "\*.doc")
- Do While f <> ""
- Set wd = doc.documents.Open(ThisWorkbook.Path & "" & f)
- doc.Visible = True
- '对Word进行操作的具体数据
- f = Dir
- wd.Close False
- Loop
- doc.Quit
- MsgBox "完成!"
- End Sub
复制代码
②Word VBA向word表格写数据:
如下图所示的数据,如果要用WordVBA写入数据,有两种方式。
- Sub 第一种写入方法()
- Dim t As Table
- Set t = ActiveDocument.Tables(1)
- t.Cell(1, 1).Range = 1
- t.Cell(1, 2).Range = 2
- t.Cell(1, 3).Range = 3
- t.Cell(2, 1).Range = 4
- t.Cell(2, 2).Range = 5
- t.Cell(2, 3).Range = 6
- End Sub
- Sub 第二种写入方法()
- Set t = ActiveDocument.Tables(1).Range
- For i = 1 To t.Cells.Count
- t.Cells(i).Range = i
- Next
- End Sub
复制代码
③Word VBA新建2行3列表格:
- Sub 宏1()
- ActiveDocument.Tables.Add Range:=Selection.Range, NumRows:=2, NumColumns:=3
- Selection.Tables(1).Style = "网格型" '如果不表格样式,看不到边框。
- End Sub
复制代码
④Excel导出Word图片:
- Sub 复制到Excel后输出1()
- Dim Excel_Shape As Shape
- Dim i As Integer
- Dim Word, Myword As Object
- Set Word = CreateObject("word.application")
- Set Myword = Word.Documents.Open("C:\Users\Brildo\Desktop\test.doc")
- Word.Visible = True
- Application.DisplayAlerts = False '从doc到xls的复制过程可能会报错,故加此句
- For i = 1 To Myword.Shapes.Count
- Myword.Shapes(i).Select
- Word.Selection.Copy
- ActiveSheet.Cells(i, 1).Activate
- ActiveSheet.PasteSpecial Format:="图片(增强型图元文件)", Link:=False, DisplayAsIcon:=False
- Set Excel_Shape = ActiveSheet.Shapes(1) '因为当单个doc中存在图片量过多,均复制到xls中造成数据量过大,
- '这里采用了复制一个进入xls,再另存图片后,立即删除xls中的图片数据,所以遍历时,index永远是1
- Excel_Shape.ScaleHeight 1, True, msoScaleFromMiddle '调整图片大小为原始大小,不缩放
- Excel_Shape.ScaleWidth 1, True, msoScaleFromMiddle
- Excel_Shape.Copy
- With ActiveSheet.ChartObjects.Add(0, 0, Excel_Shape.Width, Excel_Shape.Height).Chart
- .Paste
- .Export ThisWorkbook.Path & "" & i & ".jpg"
- .Parent.Delete '删除第二次复制产生的数据
- End With
- Excel_Shape.Delete '删除第一次复制产生的数据
- Next i
- End Sub
复制代码
|