请教,word插入图片问题。

qq_40952908 2017-11-08 03:34:11
请教,word插入图片问题。
在同一个目录下,有十至30左右的DOC文件和相等数量的JPG文件,文件名相同,如:张三.doc和张三.jpg
要把图片插入到doc文件中。

指定文件名时,没有出错,但使用变量时,就过不去。

Dim wrdApp As Word.Application
Dim wrdDoc As Word.Document
Set wrdApp = CreateObject("Word.Application")
Dim objWdRange As Word.Range
Dim GraphImage As String
GraphImage = "c:\456\timg.jpg"
wrdApp.Visible = True
Set wrdDoc = wrdApp.Documents.Open("c:\456\timg.doc")

Selection.MoveDown Unit:=wdLine, Count:=2


With wrdDoc
Dim wrdPic As Word.InlineShape
Set wrdPic = .Range.InlineShapes.AddPicture(FileName:=GraphImage, LinkToFile:=False, SaveWithDocument:=True)
wrdPic.ScaleHeight = 50
wrdPic.ScaleWidth = 50
ActiveDocument.Save
End With
wrdDoc.Close
Set wrdDoc = Nothing
wrdApp.Quit
Set wrdApp = Nothing

这个是指定文件名的 可以通过

'文件名分类
Dim a() As String
Dim doc() As String
Dim jpg() As String

Dim i As Integer
Dim j As Integer

Dim fn As String


Dim fso As Object
Dim folder As Object
Dim subfolder As Object
Dim file As Object
Set fso = CreateObject("scripting.filesystemobject") '??FSO??
Set folder = fso.getfolder("c:\456")
TextBox2.Text = ""
For Each file In folder.Files '??????????
' MsgBox file '?????

If TextBox2.Text = "" Then
TextBox2.Text = file & ","
Else




TextBox2.Text = TextBox2.Text & vbCrLf & file & ","
' TextBox1.TextBox = file
'?????
End If
Next
Set fso = Nothing
Set folder = Nothing

a = Split(TextBox2.Text, ",") '??????
doc = Split(TextBox2.Text, ",")
jpg = Split(TextBox2.Text, ",")




For i = 0 To UBound(doc) '????.doc ??????
If doc(i) <> "" Then
If Right(doc(i), 4) <> ".doc" Then
doc(i) = ""
End If

If Left(doc(i), 1) = "~$" Then
doc(i) = ""
End If
End If

Next


For i = 0 To UBound(doc) '????.jpg ??????
If jpg(i) <> "" Then
If Right(jpg(i), 4) <> ".jpg" Then
jpg(i) = ""
End If
End If

Next


TextBox2.Text = ""

For i = 0 To UBound(doc) '??doc

If doc(i) <> "" Then

If TextBox2.Text = "" Then
TextBox2.Text = doc(i)
Else
TextBox2.Text = TextBox2.Text & vbCrLf & doc(i)
End If

End If

Next

TextBox3.Text = ""

For i = 0 To UBound(jpg) '??jpg

If jpg(i) <> "" Then

If TextBox3.Text = "" Then
TextBox3.Text = jpg(i)
Else
TextBox3.Text = TextBox3.Text & vbCrLf & jpg(i)
End If

End If


Next


'分类完成


'插图


'-----------------------------------------------------


For i = 0 To UBound(doc)
If doc(i) <> "" Then
j = 0

j = i + 1





Dim wrdApp As Word.Application
Dim wrdDoc As Word.Document
Set wrdApp = CreateObject("Word.Application")
Dim objWdRange As Word.Range
Dim GraphImage As String
GraphImage = jpg(j)
wrdApp.Visible = True
Set wrdDoc = wrdApp.Documents.Open(doc(i))




With wrdDoc
Dim wrdPic As Word.InlineShape
Set wrdPic = .Range.InlineShapes.AddPicture(FileName:=GraphImage, LinkToFile:=False, SaveWithDocument:=True)
wrdPic.ScaleHeight = 50
wrdPic.ScaleWidth = 50
ActiveDocument.Save
End With
wrdDoc.Close
Set wrdDoc = Nothing
wrdApp.Quit
Set wrdApp = Nothing




Label1.Caption = "完成"






' Selection.InlineShapes(1).Height = 76.55
' Selection.InlineShapes(1).Width = 62.35

' Selection.Cut
' Selection.MoveDown Unit:=wdLine, Count:=2
' Selection.PasteAndFormat (wdPasteDefault)
' ActiveDocument.Save
' ActiveDocument.Close
End If

Next


这是变量名为文件名,在插入图片时,总是报错。
请大神帮我看看,万分感谢

...全文
581 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_40952908 2017-11-08
  • 打赏
  • 举报
回复
还是不行呀
赵4老师 2017-11-08
  • 打赏
  • 举报
回复
  Dim wrdApp As Word.Application
  Dim wrdDoc As Word.Document
  Set wrdApp = CreateObject("Word.Application")
  Dim objWdRange As Word.Range
  Dim GraphImage As String
  GraphImage = "c:\456\timg.jpg"
  wrdApp.Visible = True
  Set wrdDoc = wrdApp.Documents.Open("c:\456\timg.doc")
  Selection.MoveDown Unit:=wdLine, Count:=2
  With wrdDoc
    Dim wrdPic As Word.InlineShape
    Set wrdPic = .Range.InlineShapes.AddPicture(FileName:=GraphImage, LinkToFile:=False, SaveWithDocument:=True)
    wrdPic.ScaleHeight = 50
    wrdPic.ScaleWidth = 50
    ActiveDocument.Save
  End With
  wrdDoc.Close
  Set wrdDoc = Nothing
  wrdApp.Quit
  Set wrdApp = Nothing
'这个是指定文件名的 可以通过


'文件名分类
Dim wrdApp As Word.Application
Dim wrdDoc As Word.Document
Dim objWdRange As Word.Range
Dim GraphImage As String
Dim wrdPic As Word.InlineShape
Dim a() As String
Dim doc() As String
Dim jpg() As String
Dim i As Integer
Dim j As Integer
Dim fn As String
Dim fso As Object
Dim folder As Object
Dim subfolder As Object
Dim file As Object
Set fso = CreateObject("scripting.filesystemobject")                          '??FSO??
Set folder = fso.getfolder("c:\456")
TextBox2.Text = ""
For Each file In folder.Files                     '??????????
           '   MsgBox file     '?????
              If TextBox2.Text = "" Then
              TextBox2.Text = file & ","
              Else
              TextBox2.Text = TextBox2.Text & vbCrLf & file & ","
           '  TextBox1.TextBox = file
              '?????
               End If
Next
Set fso = Nothing
Set folder = Nothing
a = Split(TextBox2.Text, ",")                    '??????
doc = Split(TextBox2.Text, ",")
jpg = Split(TextBox2.Text, ",")
For i = 0 To UBound(doc)     '????.doc ??????
  If doc(i) <> "" Then
    If Right(doc(i), 4) <> ".doc" Then
      doc(i) = ""
    End If
    If Left(doc(i), 1) = "~$" Then
          doc(i) = ""
       End If
  End If
Next
For i = 0 To UBound(doc)     '????.jpg ??????
  If jpg(i) <> "" Then
    If Right(jpg(i), 4) <> ".jpg" Then
      jpg(i) = ""
    End If
  End If
Next
TextBox2.Text = ""
For i = 0 To UBound(doc)     '??doc
    If doc(i) <> "" Then
       If TextBox2.Text = "" Then
          TextBox2.Text = doc(i)
       Else
          TextBox2.Text = TextBox2.Text & vbCrLf & doc(i)
       End If
    End If
 Next
TextBox3.Text = ""
For i = 0 To UBound(jpg)     '??jpg
    If jpg(i) <> "" Then
       If TextBox3.Text = "" Then
          TextBox3.Text = jpg(i)
       Else
          TextBox3.Text = TextBox3.Text & vbCrLf & jpg(i)
       End If
    End If
Next
'分类完成
'插图
'-----------------------------------------------------
For i = 0 To UBound(doc)
    If doc(i) <> "" Then
        'j = 0
        j = i + 1
        Set wrdApp = CreateObject("Word.Application")
        GraphImage = jpg(j)
        Debug.Print "jpg(j:"+CStr(j)+"):["+jpg(j)+"]" '★加这句在立即窗口显示jpg(j)的值辅助调试错误:比如为""或前面少c:\456\ ?
        wrdApp.Visible = True
        Set wrdDoc = wrdApp.Documents.Open(doc(i))
        With wrdDoc
          Set wrdPic = .Range.InlineShapes.AddPicture(FileName:=GraphImage, LinkToFile:=False, SaveWithDocument:=True)
          wrdPic.ScaleHeight = 50
          wrdPic.ScaleWidth = 50
          ActiveDocument.Save
        End With
        wrdDoc.Close
        Set wrdDoc = Nothing
        wrdApp.Quit
        Set wrdApp = Nothing
        Label1.Caption = "完成"
         '   Selection.InlineShapes(1).Height = 76.55
       '   Selection.InlineShapes(1).Width = 62.35
        '   Selection.Cut
        '  Selection.MoveDown Unit:=wdLine, Count:=2
       '   Selection.PasteAndFormat (wdPasteDefault)
       '  ActiveDocument.Save
'         ActiveDocument.Close
    End If
Next

5,139

社区成员

发帖
与我相关
我的任务
社区描述
其他开发语言 Office开发/ VBA
社区管理员
  • Office开发/ VBA社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧