Как вставить картинку в word vba

Well, first we need to clean up your code a bit, like below. This runs fine on my site — it places the image right at the front of the GraphicImage bookmark, not at the top of the document — but maybe your image is so large it extends to the top?

Dim objWdRange As Word.Range
Dim GraphImage As String
Dim shortString As String
shortString = Range("short").Value '? don't know what this is for
GraphImage = "http://xxx.xxxxx.com/xxx/xxx.png?instrument=Image.png"
wrdApp.Visible = True
    Set wrdDoc = wrdApp.Documents.Open("C:Program FilesMy Dropboxdailystrategy.doc")
    Set objWdRange = wrdDoc.Content '? don't know what this is for
    With wrdDoc
        If .Bookmarks.Exists("shortString ") Then
           .Bookmarks("shortString ").Range.Text = shortString
        End If
     If .Bookmarks.Exists("GraphImage") Then
         Dim wrdPic As Word.InlineShape
         Set wrdPic = .Bookmarks("GraphImage").Range.InlineShapes.AddPicture(FileName:=GraphImage, LinkToFile:=False, SaveWithDocument:=True)
         wrdPic.ScaleHeight = 50
         wrdPic.ScaleWidth = 50
     End If
       .SaveAs "c:temptest.doc"
    End With
    wrdDoc.Close
    Set wrdDoc = Nothing
    wrdApp.Quit
    Set wrdApp = Nothing

EDIT: Jan 11, 2010
The above code was changed to include

 If .Bookmarks.Exists("GraphImage") Then
 Dim wrdPic As Word.InlineShape
 Set wrdPic = .Bookmarks("GraphImage").Range.InlineShapes.AddPicture(FileName:=GraphImage, LinkToFile:=False, SaveWithDocument:=True)
    wrdPic.ScaleHeight = 50
    wrdPic.ScaleWidth = 50
 End If

This sets the picture as an object and then uses the scaling methods ScaleHeight and ScaleWidth to make it 50% smaller in both height and width.

Sub Макрос()

        Dim shape As shape
    Dim FN As String

            ‘ Полное имя файла-рисунка.
    FN = «C:UsersUserDesktopРисунок.png»

        ‘ Вставка неплавающего рисунка и превращение неплавающего рисунка в плавающий.
        ‘ При этом присваиваем рисунку имя ‘shape’ и далее в коде будем обращаться
        ‘ к рисунку по имени ‘shape’.
    Set shape = Selection.InlineShapes.AddPicture(FileName:=FN, LinkToFile:=False, _
        SaveWithDocument:=True, Range:=Selection.Range).ConvertToShape

        ‘ Здесь можете делать нужные действия с рисункам, используя имя ‘shape’.
        ‘ Например, так можно узнать левое положение рисунка.
        ‘ Информация запишется в View — Immediate Window.
    Debug.Print shape.Left

    End Sub

[свернуть]

КостяФедореев

Часто онлайн

792 / 530 / 238

Регистрация: 09.01.2017

Сообщений: 1,820

1

Word

21.07.2020, 11:38. Показов 6719. Ответов 11

Метки word 2016 (Все метки)


Студворк — интернет-сервис помощи студентам

Приветствую.
Как оказалось VBA Word не мое) Да и не охота осваивать, редко использую, но вот возникла необходимость вставить картинку в документ на все страницы в нужном положении и обтекание-перед текстом-
Что получилось наделать):

Visual Basic
1
2
3
4
5
6
7
8
9
Sub Picture()
Dim shpCanvas As Shape
Set shpCanvas = ActiveDocument.Shapes _
.AddCanvas(Left:=300, Top:=700, _
Width:=600, Height:=400)
shpCanvas.CanvasItems.AddPicture _
FileName:="C:UsersadminDesktop4234234234.jpg", _
LinkToFile:=False, SaveWithDocument:=True ' тут бы диалоговое окно для выбора файла картинки, думаю разберусь как
End Sub

теперь эту красоту надо на всех страницах разместить)
С циклом по страницам не знаком,
Подскажите пожалуйста.

Добавлено через 8 минут
И ещё есть ли возможность макрос сохранить файлом, чтоб в поле документа перетащить и он установится?



0



779 / 461 / 79

Регистрация: 18.05.2016

Сообщений: 1,242

Записей в блоге: 4

21.07.2020, 11:48

2

картинка на всех страницах — это подложка что ли?



0



Часто онлайн

792 / 530 / 238

Регистрация: 09.01.2017

Сообщений: 1,820

21.07.2020, 11:53

 [ТС]

3

amd48, нет.
это картинка из файла, поверх текста в нужном месте, на всех листах.



0



779 / 461 / 79

Регистрация: 18.05.2016

Сообщений: 1,242

Записей в блоге: 4

21.07.2020, 11:53

4

Цитата
Сообщение от КостяФедореев
Посмотреть сообщение

макрос сохранить файлом, чтоб в поле документа перетащить и он установится?

Поле документа — это что в ваших терминах? Если надо иметь макрос, который будет работать с разными документами, то можно разместить его в шаблоне Normal.dot и для него сделать кнопку. Или лучше сделать надстройку — это dot-шаблон в папке %appdata%MicrosoftWordSTARTUP



0



Часто онлайн

792 / 530 / 238

Регистрация: 09.01.2017

Сообщений: 1,820

21.07.2020, 11:55

 [ТС]

5

Подложку я умею делать, а тут именно картинка в определенной области

Добавлено через 1 минуту

Цитата
Сообщение от amd48
Посмотреть сообщение

Поле документа — это что в ваших терминах? Если надо иметь макрос, который будет работать с разными документами, то можно разместить его в шаблоне Normal.dot и для него сделать кнопку. Или лучше сделать надстройку — это dot-шаблон в папке %appdata%MicrosoftWordSTARTUP

Думаю это я и имел ввиду, только Вы корректно это описали))



0



amd48

779 / 461 / 79

Регистрация: 18.05.2016

Сообщений: 1,242

Записей в блоге: 4

21.07.2020, 12:15

6

наверное, так:

Visual Basic
1
2
3
4
5
6
7
    Dim shpCanvas As Shape
    Dim i As Byte
    For i = 1 To ActiveDocument.Content.Information(wdActiveEndAdjustedPageNumber)
        Set shpCanvas = ActiveDocument.Shapes.AddCanvas(Left:=300, Top:=700, Width:=600, Height:=400)
        shpCanvas.CanvasItems.AddPicture FileName:="C:UsersadminDesktop4234234234.jpg"
        Selection.GoTo wdGoToPage, wdGoToNext, 1
    Next



0



КостяФедореев

Часто онлайн

792 / 530 / 238

Регистрация: 09.01.2017

Сообщений: 1,820

21.07.2020, 15:34

 [ТС]

7

amd48, Спасибо! Отлично работает!

Что-то не могу понять, как dot-шаблон сохранить?

Добавлено через 2 минуты
В итоге вышло так(добавил возможность выбора картинки):

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Sub Вертикально()
Dim shpCanvas As Shape
Dim i As Byte
Dim fd As FileDialog
Dim vrtSelectedItem As Variant
 
 Set fd = Application.FileDialog(msoFileDialogOpen)
  
With fd
  
    If .Show = -1 Then
 
        For Each vrtSelectedItem In .SelectedItems
            For i = 1 To ActiveDocument.Content.Information(wdActiveEndAdjustedPageNumber)
        Set shpCanvas = ActiveDocument.Shapes.AddCanvas(Left:=400, Top:=750, Width:=600, Height:=400)
            shpCanvas.CanvasItems.AddPicture FileName:=vrtSelectedItem
            Selection.GoTo wdGoToPage, wdGoToNext, 1
            Next
        Next vrtSelectedItem
    
    Else
    End If
End With
End Sub



0



779 / 461 / 79

Регистрация: 18.05.2016

Сообщений: 1,242

Записей в блоге: 4

21.07.2020, 15:43

8

Цитата
Сообщение от КостяФедореев
Посмотреть сообщение

как dot-шаблон сохранить?

Сохранить как. Выбрать «шаблон». Ворд автоматически откроет для сохранения папку шаблонов. Но надо выбрать %appdata%MicrosoftWordSTARTUP
Желательно использовать формат 2003-го ворда, а не эти новые dotxи всё такое. В старых форматах макросы сохранялись без вопросов. В новых надо всегда выбирать формат именно с поддержкой макросов, иначе они не сохранятся. И всё программирование улетит в трубу



0



Часто онлайн

792 / 530 / 238

Регистрация: 09.01.2017

Сообщений: 1,820

21.07.2020, 15:48

 [ТС]

9

Цитата
Сообщение от amd48
Посмотреть сообщение

Сохранить как. Выбрать «шаблон».

А я потом смогу этот шаблон на другой комп перекинуть?



0



779 / 461 / 79

Регистрация: 18.05.2016

Сообщений: 1,242

Записей в блоге: 4

21.07.2020, 17:54

10

Файл есть файл. Какие проблемы?



0



Часто онлайн

792 / 530 / 238

Регистрация: 09.01.2017

Сообщений: 1,820

21.07.2020, 19:14

 [ТС]

11

amd48, действительно, чёто затупил я

Добавлено через 1 минуту
amd48, а в надстройку это все запихать? Это особенный какой-то танец с бубном?
Или решаемо без особых усилий?



0



Lyutikova

1 / 1 / 0

Регистрация: 15.09.2019

Сообщений: 45

31.12.2021, 09:07

12

Доброго времени суток. Похожая ситуация) Есть отсканированные рукописные документы. Их сканы в PNG, в папке C:Scan имена файлов 1.png,2.png,3.png,4.png,5.png вставлять каждый файл на новую страницу. Вот так получается

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
Sub Scan()
'
' Scan Макрос
'
'
    Selection.WholeStory
    With ActiveDocument.Styles(wdStyleNormal).Font
        If .NameFarEast = .NameAscii Then
            .NameAscii = ""
        End If
        .NameFarEast = ""
    End With
    With ActiveDocument.PageSetup
        .LineNumbering.Active = False
        .Orientation = wdOrientPortrait
        .TopMargin = CentimetersToPoints(0)
        .BottomMargin = CentimetersToPoints(0)
        .LeftMargin = CentimetersToPoints(0)
        .RightMargin = CentimetersToPoints(0)
        .Gutter = CentimetersToPoints(0)
        .HeaderDistance = CentimetersToPoints(1.25)
        .FooterDistance = CentimetersToPoints(1.25)
        .PageWidth = CentimetersToPoints(21)
        .PageHeight = CentimetersToPoints(29.7)
        .FirstPageTray = wdPrinterDefaultBin
        .OtherPagesTray = wdPrinterDefaultBin
        .SectionStart = wdSectionNewPage
        .OddAndEvenPagesHeaderFooter = False
        .DifferentFirstPageHeaderFooter = False
        .VerticalAlignment = wdAlignVerticalTop
        .SuppressEndnotes = False
        .MirrorMargins = False
        .TwoPagesOnOne = False
        .BookFoldPrinting = False
        .BookFoldRevPrinting = False
        .BookFoldPrintingSheets = 1
        .GutterPos = wdGutterPosLeft
    End With
    With Selection.ParagraphFormat
        .LeftIndent = CentimetersToPoints(0)
        .RightIndent = CentimetersToPoints(0)
        .SpaceBefore = 0
        .SpaceBeforeAuto = False
        .SpaceAfter = 0
        .SpaceAfterAuto = False
        .LineSpacingRule = wdLineSpace1pt5
        .Alignment = wdAlignParagraphJustify
        .WidowControl = True
        .KeepWithNext = False
        .KeepTogether = False
        .PageBreakBefore = False
        .NoLineNumber = False
        .Hyphenation = True
        .FirstLineIndent = CentimetersToPoints(0)
        .OutlineLevel = wdOutlineLevelBodyText
        .CharacterUnitLeftIndent = 0
        .CharacterUnitRightIndent = 0
        .CharacterUnitFirstLineIndent = 0
        .LineUnitBefore = 0
        .LineUnitAfter = 0
        .MirrorIndents = False
        .TextboxTightWrap = wdTightNone
        .CollapsedByDefault = False
    End With
    Selection.InlineShapes.AddPicture FileName:="C:Scan1.png", LinkToFile:= _
        False, SaveWithDocument:=True
    Selection.InsertBreak Type:=wdPageBreak
    Selection.InlineShapes.AddPicture FileName:="C:Scan2.png", LinkToFile:= _
        False, SaveWithDocument:=True
    Selection.InsertBreak Type:=wdPageBreak
    Selection.InlineShapes.AddPicture FileName:="C:Scan3.png", LinkToFile:= _
        False, SaveWithDocument:=True
    Selection.InsertBreak Type:=wdPageBreak
    Selection.InlineShapes.AddPicture FileName:="C:Scan4.png", LinkToFile:= _
        False, SaveWithDocument:=True
End Sub

Но вот можно ли как то вставить из папки Scan не по именам а выбрать все из папки и вставить в документ на каждую страницу одну картинку?

Добавлено через 27 минут
Вот результат https://disk.yandex.ru/i/nN52xb0ezOuCxg



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

31.12.2021, 09:07

Помогаю со студенческими работами здесь

Вставить картинки в определенные места документа в определенном размере
Добрый день,
подскажите, плз:
как с помощью макросов реализовать следующее:

word 2007
есть…

Как вставить текст в определенное место WORD документа?
Подскажите пожалуйста, как вставить программно в вордовский документ текст в определенное место и…

Вставить нумерацию в таблицу нижнего колонтитула документа word
Подскажите, пожалуйста, почему нельзя напрямую в ячейку таблицы колонтитула документа word вставить…

Как считать текст, таблицы и картинки из документа word
Как считать текст, таблицы и картинки из документа word? И наоборот записать в него. Попытался сам,…

Макрос Word: вставить в конец документа строчку с информацией о документе
Нужен макрос, вставляющий в конец документа строчку с информацией о документе (путь, имя, дата…

На оборотной стороне документа word в правой части документа, текст съезжает за границу документа
Добрый вечер.

Есть код, который формирует документ из шаблона. И все вроде бы, но происходит что…

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

12

Понадобилось мне тут в свое время писать много текста в MS Word, вставляя туда картинки. Понимая, что картинки рано или поздно понадобится переделывать, я пришел к необходимости вставки не картинок, а ссылок на них. Но вставить поле мало — крайне желательно еще и подписывать имя вставленной картинки.

При этом файл doc / docx может перемещаться между компьютерами (да, я пользуюсь и DropBox, и Yandex.Drive, и OneDrive). Соответственно надо вставлять относительные пути и подписывать их же. Не очень продолжительный поиск по сети и немного фантазии дали такой вариант:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73

Option Explicit

Public sInitialPath As String

Private Declare Function PathRelativePathToW _
    Lib «shlwapi.dll» (ByVal pszPath As Long, _
    ByVal pszFrom As Long, ByVal dwAttrFrom As Long, _
    ByVal pszTo As Long, ByVal dwAttrTo As Long) _
    As Boolean

     
Private Function GetRelativePath _
  (ByVal sPathFrom As String, _
   ByVal sPathTo As String) As String
   ‘ Определение относительного адреса
   ‘ каталога или файла
   Dim sRelativePath As String
   sRelativePath = Space(260) ‘ резервируем буфер
   
   If PathRelativePathToW(StrPtr(sRelativePath), _
             StrPtr(sPathFrom), vbDirectory, _
             StrPtr(sPathTo), 0) Then  ‘ определили адрес
             ‘MsgBox sRelativePath
     GetRelativePath = Left(sRelativePath, _
        InStr(sRelativePath, vbNullChar) — 1)
   Else  
     GetRelativePath = «*»
   End If
End Function

Public Sub InsertLinkToPicture()
Dim sFileName As String
Dim oField As Field
    With Application.FileDialog(msoFileDialogOpen)
      .Title = «Укажите рисунок»
      .AllowMultiSelect = False
      .ButtonName = «Select»
      .Filters.Clear
      .Filters.Add «Картинки», «*.jpg; *.tiff; *.tif; *.png»
      If sInitialPath = «» Then sInitialPath = Application.ActiveDocument.Path
      .InitialView = msoFileDialogViewList
      If .Show Then sFileName = .SelectedItems(1) Else Exit Sub
    End With
    If Left(Selection.Text, 1) <> Chr(13) Then
      Selection.TypeText Text:=vbCr
    End If
    sFileName = GetRelativePath(Application.ActiveDocument.FullName, sFileName)
    Select Case True
      Case Left(sFileName, 2) = «..»
        sFileName = Right(sFileName, Len(sFileName) — 2)
      Case Left(sFileName, 1) = «.»
        sFileName = Right(sFileName, Len(sFileName) — 1)
    End Select
    If Left(sFileName, 1) = «/» Or Left(sFileName, 1) = «» Then
      sFileName = Right(sFileName, Len(sFileName) — 1)
    End If
    Set oField = Selection.Fields.Add(Range:=Selection.Range, Type:=wdFieldEmpty, _
      Text:=«INCLUDEPICTURE  « + Chr(34) + _
      Replace(sFileName, «», «/») + _
      Chr(34) + » d « _
      , PreserveFormatting:=True)

     
    If InStr(sFileName, «_35%») Then
      ActiveDocument.Hyperlinks.Add Anchor:=oField.Result, Address:=Replace(sFileName, «_35%», «»), SubAddress:=«»
    End If

   
    Selection.TypeText Text:=vbCrLf + Replace(sFileName, «_35%», «») ‘Right(sFileName, Len(sFileName) — Len(Application.ActiveDocument.Path))
    Selection.HomeKey Unit:=wdLine, Extend:=wdExtend
    Selection.Font.Italic = True
    Selection.Font.Bold = True
    Selection.Font.Color = wdColorRed
    ‘ Selection.Range.HighlightColorIndex = wdGreen
    Selection.EndKey
End Sub

Но, как выяснилось, в MS Office 2013 x64 решение работать не будет (даже если попытаться корректно объявить импорт PathRelativePathToW, VBA отказывается обрабатывать указатели на строки). Поэтому было найдено другое решение:(исходник здесь):

Тогда по Ctrl+Z будет отменяться все целиком, а не по шагам. Нередко рядом с оригинальным файлом я кладу его «уменьшенную» копию (уменьшение выполняется с FastStone Image Viewer, картинка уменьшается до 35%, имя файла оканчивается на «_35%»). Если рядом с оригиналом есть уменьшенный вариант, в поле вставляется «уменьшенная» копия, а подпись идет на нормальный вариант. В результате получилось такое чудо:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119

Option Explicit

Public sInitialPath As String

Public Function GetRelativePath(ByVal sFrom As String, ByVal sTo As String) As String
  GetRelativePath = «»
  Dim sFromTmp As String, sToTmp As String, sTmp As String, bFirst As Boolean
  sFromTmp = «»
  sToTmp = «»
  sTmp = «»
  bFirst = True
  Do While Len(sFrom) > Len(sFromTmp) Or Len(sTo) > Len(sToTmp)
    If Len(sFrom) > Len(sFromTmp) Then
      If Not bFirst Then sFrom = Right(sFrom, Len(sFrom) — Len(sFromTmp) — 1)
        sFromTmp = GetLeftPart(sFrom)
      Else
        sFrom = «»
        sFromTmp = «»
      End If

     
      If Len(sTo) > Len(sToTmp) Then
        If Not bFirst Then sTo = Right(sTo, Len(sTo) — Len(sToTmp) — 1)
          sToTmp = GetLeftPart(sTo)
        Else
          sTo = «»
          sToTmp = «»
        End If

       
        If bFirst And sFromTmp <> sToTmp Then
          Exit Function ‘ Нет общего корня
        Else
          bFirst = False
        End If

       
        If Len(GetRelativePath) > 0 Or sFromTmp <> sToTmp Then
          If Len(sFromTmp) > 0 Then
            If Len(GetRelativePath) > 0 Then
              GetRelativePath = GetRelativePath & «..»
            Else
              GetRelativePath = GetRelativePath & «..»
            End If
          End If
          If Len(sToTmp) > 0 Then
            If Len(sTmp) > 0 Then
              sTmp = sTmp & «» & sToTmp
            Else
              sTmp = sTmp & sToTmp
            End If
          End If
        End If
  Loop
  If Len(sTmp) > 0 Then GetRelativePath = GetRelativePath & «» & sTmp
  If 0 = Len(GetRelativePath) Then GetRelativePath = «.»
End Function

 
Function GetLeftPart(sPath)
Dim i As Integer
  For i = 1 To Len(sPath)
    If «» = Mid(sPath, i, 1) Then
      GetLeftPart = Left(sPath, i — 1)
      Exit Function
    End If
  Next
  GetLeftPart = sPath
End Function

Public Sub InsertLinkToPicture()
Dim sFileName As String
Dim oField As Field
  Application.UndoRecord.StartCustomRecord

 
  With Application.FileDialog(msoFileDialogOpen)
    .Title = «Укажите рисунок»
    .AllowMultiSelect = False
    .ButtonName = «Select»
    .Filters.Clear
    .Filters.Add «Картинки», «*.jpg; *.tiff; *.tif; *.png»
    If sInitialPath = «» Then sInitialPath = Application.ActiveDocument.Path
    .InitialView = msoFileDialogViewList
    If .Show Then sFileName = .SelectedItems(1) Else Exit Sub
  End With

 
  If Left(Selection.Text, 1) <> Chr(13) Then
    Selection.TypeText Text:=vbCr
  End If
  sFileName = GetRelativePath(Application.ActiveDocument.FullName, sFileName)

 
  Select Case True
    Case Left(sFileName, 2) = «..»
      sFileName = Right(sFileName, Len(sFileName) — 2)
    Case Left(sFileName, 1) = «.»
      sFileName = Right(sFileName, Len(sFileName) — 1)
  End Select

 
  If Left(sFileName, 1) = «/» Or Left(sFileName, 1) = «» Then
    sFileName = Right(sFileName, Len(sFileName) — 1)
  End If

 
  Set oField = Selection.Fields.Add(Range:=Selection.Range, Type:=wdFieldEmpty, _
  Text:=«INCLUDEPICTURE  « + Chr(34) + _
        Replace(sFileName, «», «/») + _
        Chr(34) + » d « _
        , PreserveFormatting:=True)

       
  If InStr(sFileName, «_35%») Then
    ActiveDocument.Hyperlinks.Add Anchor:=oField.Result, Address:=Replace(sFileName, «_35%», «»), SubAddress:=«»
  End If

 
  Selection.TypeText Text:=vbCrLf + Replace(sFileName, «_35%», «»)
  Selection.HomeKey Unit:=wdLine, Extend:=wdExtend
  Selection.Font.Italic = True
  Selection.Font.Bold = True
  Selection.Font.Color = wdColorRed
  Selection.EndKey
  Selection.Collapse
  Selection.TypeParagraph
  Selection.Range.Style = ActiveDocument.Styles(wdStyleNormal)
  Application.UndoRecord.EndCustomRecord
End Sub

В документе Word вы можете быстро вставить сразу несколько изображений с помощью функции «Вставить». Но иногда вам нужно вставить путь к файлу и имена в качестве заголовка при вставке изображений. Как бы вы справились с этой задачей в файле Word?

Вставьте несколько изображений с именем файла с помощью кода VBA

Вставьте несколько изображений с именем файла, используя Kutools for Word


Вставьте несколько изображений с именем файла с помощью кода VBA

Следующий код VBA может помочь вам вставить путь к файлу и имя в качестве заголовка при вставке изображений, пожалуйста, сделайте следующее:

1. Удерживайте ALT + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.

2. А затем нажмите Вставить > Модули, скопируйте и вставьте приведенный ниже код в открытый пустой модуль:

Код VBA: вставьте несколько изображений с именем файла:

Sub PicWithCaption()
    Dim xFileDialog As FileDialog
    Dim xPath, xFile As Variant
    On Error Resume Next
    Set xFileDialog = Application.FileDialog(msoFileDialogFolderPicker)
    If xFileDialog.Show = -1 Then
        xPath = xFileDialog.SelectedItems.Item(1)
        If xPath <> "" Then
            xFile = Dir(xPath & "*.*")
            Do While xFile <> ""
                If UCase(Right(xFile, 3)) = "PNG" Or _
                    UCase(Right(xFile, 3)) = "TIF" Or _
                    UCase(Right(xFile, 3)) = "JPG" Or _
                    UCase(Right(xFile, 3)) = "GIF" Or _
                    UCase(Right(xFile, 3)) = "BMP" Then
                    With Selection
                        .InlineShapes.AddPicture xPath & "" & xFile, False, True
                        .InsertAfter vbCrLf
                        .MoveDown wdLine
                        .Text = xPath & "" & xFile & Chr(10)
                        .MoveDown wdLine
                    End With
                End If
                xFile = Dir()
            Loop
        End If
    End If
End Sub

3, Затем нажмите F5 нажмите клавишу для запуска этого кода, отобразится окно обзора, выберите папку, содержащую изображения, которые вы хотите вставить, см. снимок экрана:

doc вставить изображения с именем файла 1

4. Затем нажмите OK все изображения в выбранной папке были вставлены в документ Word, а путь к файлу и имя вставлены как заголовок, см. снимок экрана:

doc вставить изображения с именем файла 2


Вставьте несколько изображений с именем файла, используя Kutools for Word

Если у вас есть Kutools for Word, С его Фотографии вы можете быстро вставить несколько изображений с указанием пути и имени файла в документ Word сразу.

После установки Kutools for Word, пожалуйста, сделайте так:

1. Нажмите Кутулс > Фотографии, см. снимок экрана:

doc вставить изображения с именем файла 3

2. В выскочившем Вставить картинки диалоговом окне выполните следующие действия:

  • (1.) Щелкните Добавить файлы or Add Folder кнопка для выбора изображений, которые вы хотите вставить;
  • (2.) Затем проверьте Вставьте путь к файлу каждого изображения как заголовок опция в левой нижней части диалогового окна;
  • (3.) Затем щелкните Вставить кнопку.

doc вставить изображения с именем файла 4

3. После вставки изображений вы увидите, что путь к файлу и имя каждого изображения также вставлены, см. Снимок экрана:

doc вставить изображения с именем файла 5

Нажмите, чтобы скачать Kutools for Word и бесплатная пробная версия прямо сейчас!


Рекомендуемые инструменты для повышения производительности Word

выстрел kutools word kutools tab 1180x121

выстрел kutools word kutools plus tab 1180x120

Kutools For Word — Более 100 расширенных функций для Word, сэкономьте 50% времени

  • Сложные и повторяющиеся операции можно производить разово за секунды.
  • Вставляйте сразу несколько изображений из папок в документ Word.
  • Объединяйте и объединяйте несколько файлов Word из папок в одну в желаемом порядке.
  • Разделите текущий документ на отдельные документы в соответствии с заголовком, разрывом раздела или другими критериями.
  • Преобразование файлов между Doc и Docx, Docx и PDF, набор инструментов для общих преобразований и выбора и т. Д.

Комментарии (7)


Оценок пока нет. Оцените первым!

Понравилась статья? Поделить с друзьями:
  • Как вставить картинку в vba excel userform
  • Как вставить картинку в таблицу word по размеру ячейки
  • Как вставить картинку в microsoft word 2010
  • Как вставить картинку в таблицу excel в ячейку
  • Как вставить картинку в excel чтобы она была закреплена