Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Макрос AddOlEObject на каждый лист книги. - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Макрос AddOlEObject на каждый лист книги. (Макросы/Sub)
Макрос AddOlEObject на каждый лист книги.
Maratej Дата: Среда, 25.01.2017, 14:42 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Здравствуйте. Нашел макрос на просторах интернета для вставки фотографий из заданной папки, в принципе даже апгрейдил его для работы сразу на всех листах:
[vba]
Код
Sub AddOlEObject()

    Dim mainWorkBook As Workbook

    Set mainWorkBook = ActiveWorkbook
    
    For i = 2 To ThisWorkbook.Sheets.Count
    
    With Sheets(i)
        
    Sheets(i).Activate
    
    Folder = Range("H2")
    
    Folderpath = Folder '
    
    Set fso = CreateObject("Scripting.FileSystemObject")
    
    NoOfFiles = fso.GetFolder(Folder).Files.Count
    
    Set listfiles = fso.GetFolder(Folderpath).Files
    
    For Each fls In listfiles
       
       strCompFilePath = Folder & "\" & Trim(fls.Name)
        
        If strCompFilePath <> "" Then
            
            If (InStr(1, strCompFilePath, "jpg", vbTextCompare) > 1 _
            Or InStr(1, strCompFilePath, "jpeg", vbTextCompare) > 1 _
            Or InStr(1, strCompFilePath, "png", vbTextCompare) > 1) Then
                 counter = counter + 25
                Call insert(strCompFilePath, counter - 15)
                Sheets(i).Activate
            End If
        End If
    Next
mainWorkBook.Save
End With
Next
End Sub

Function insert(PicPath, counter)
    
    With ActiveSheet.Pictures.insert(PicPath)
        With .ShapeRange
            .LockAspectRatio = msoTrue
            .Width = 200
            .Height = 375
        End With
        .Left = ActiveSheet.Range("B" & counter).Left
        .Top = ActiveSheet.Range("B" & counter).Top
        .Placement = 1
        .PrintObject = True
    End With
End Function
[/vba]

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

В принципе всегда находил ответы на форумах (но и пользовался всегда формулами), а вот с макросами не все так просто как оказалось)

Спасибо, заранее!
К сообщению приложен файл: 1-.xlsm (25.8 Kb)


Сообщение отредактировал Maratej - Среда, 25.01.2017, 14:44
 
Ответить
СообщениеЗдравствуйте. Нашел макрос на просторах интернета для вставки фотографий из заданной папки, в принципе даже апгрейдил его для работы сразу на всех листах:
[vba]
Код
Sub AddOlEObject()

    Dim mainWorkBook As Workbook

    Set mainWorkBook = ActiveWorkbook
    
    For i = 2 To ThisWorkbook.Sheets.Count
    
    With Sheets(i)
        
    Sheets(i).Activate
    
    Folder = Range("H2")
    
    Folderpath = Folder '
    
    Set fso = CreateObject("Scripting.FileSystemObject")
    
    NoOfFiles = fso.GetFolder(Folder).Files.Count
    
    Set listfiles = fso.GetFolder(Folderpath).Files
    
    For Each fls In listfiles
       
       strCompFilePath = Folder & "\" & Trim(fls.Name)
        
        If strCompFilePath <> "" Then
            
            If (InStr(1, strCompFilePath, "jpg", vbTextCompare) > 1 _
            Or InStr(1, strCompFilePath, "jpeg", vbTextCompare) > 1 _
            Or InStr(1, strCompFilePath, "png", vbTextCompare) > 1) Then
                 counter = counter + 25
                Call insert(strCompFilePath, counter - 15)
                Sheets(i).Activate
            End If
        End If
    Next
mainWorkBook.Save
End With
Next
End Sub

Function insert(PicPath, counter)
    
    With ActiveSheet.Pictures.insert(PicPath)
        With .ShapeRange
            .LockAspectRatio = msoTrue
            .Width = 200
            .Height = 375
        End With
        .Left = ActiveSheet.Range("B" & counter).Left
        .Top = ActiveSheet.Range("B" & counter).Top
        .Placement = 1
        .PrintObject = True
    End With
End Function
[/vba]

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

В принципе всегда находил ответы на форумах (но и пользовался всегда формулами), а вот с макросами не все так просто как оказалось)

Спасибо, заранее!

Автор - Maratej
Дата добавления - 25.01.2017 в 14:42
Udik Дата: Среда, 25.01.2017, 14:47 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 1588
Репутация: 192 ±
Замечаний: 0% ±

Excel 2016 х 64
Скорее всего сначала нужно сделать активной ячейку в целевом месте типа
[vba]
Код

range("A1").Select
[/vba]


вот вам барабан
яд 41001231307558 wm R419131876897
udik1968@gmail.com
 
Ответить
СообщениеСкорее всего сначала нужно сделать активной ячейку в целевом месте типа
[vba]
Код

range("A1").Select
[/vba]

Автор - Udik
Дата добавления - 25.01.2017 в 14:47
RAN Дата: Среда, 25.01.2017, 14:49 | Сообщение № 3
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
[vba]
Код
End With
counter =0
Next
End Sub
[/vba]


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение[vba]
Код
End With
counter =0
Next
End Sub
[/vba]

Автор - RAN
Дата добавления - 25.01.2017 в 14:49
nilem Дата: Среда, 25.01.2017, 14:51 | Сообщение № 4
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
Maratej, привет
попробуйте одну строчку добавить вот здесь
[vba]
Код
....
For i = 2 To ThisWorkbook.Sheets.Count
    counter = 0 'эту строку добавляем
   With Sheets(i)
....
[/vba]
upd Андрей уже ответил )


Яндекс.Деньги 4100159601573

Сообщение отредактировал nilem - Среда, 25.01.2017, 14:53
 
Ответить
СообщениеMaratej, привет
попробуйте одну строчку добавить вот здесь
[vba]
Код
....
For i = 2 To ThisWorkbook.Sheets.Count
    counter = 0 'эту строку добавляем
   With Sheets(i)
....
[/vba]
upd Андрей уже ответил )

Автор - nilem
Дата добавления - 25.01.2017 в 14:51
Maratej Дата: Среда, 25.01.2017, 15:27 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Спасибо всем, добавил counter = 0.
 
Ответить
СообщениеСпасибо всем, добавил counter = 0.

Автор - Maratej
Дата добавления - 25.01.2017 в 15:27
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Макрос AddOlEObject на каждый лист книги. (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!