Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.04.2021, 02:12   #1
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию Не копируются shape на другой лист

Надо xls таблицу перевести в Pdf формат. Во вложении исходная таблица и ожидаемый Pdf-результат.
На данный момент, макрос не всегда копирует на новый лист объекты shape - копируются только на первой итерации.

использую .Select по совету https://stackoverflow.com/a/48620887/7725813

Как преобразовать исходную таблицу на другой лист в нужном виде из которого можно будет экспортировать в pdf?

Код:
Sub DoSomething()
    Dim oSheetInput As Worksheet
    Dim oSheetOutput As Worksheet
    Dim iCurrentDocument As Integer
    Dim iLastRowOutput As Integer
    Dim rngSelectionArea As Range
    Dim rngCopyingArea As Range
    
    Dim shape As Excel.shape
    
    Set oSheetInput = Sheets("1")
    Set oSheetOutput = Sheets("pdf")
    With oSheetOutput
        .Cells.ClearContents
        .Cells.ClearFormats
        .Columns(1).ColumnWidth = 65
        .Columns(2).ColumnWidth = 64
        For Each shape In .Shapes
            shape.Delete
        Next
    End With
    
    With oSheetInput
        If .AutoFilter.FilterMode Then
                .AutoFilter.ShowAllData
        End If
       
        Set rngSelectionArea = oSheetInput.Range("A13").CurrentRegion ' filtration range
        
        For iCurrentDocument = 2 To rngSelectionArea.Columns.Count
            ' filter non-empty rows of iCurrentDocument column
            rngSelectionArea.AutoFilter Field:=iCurrentDocument, Criteria1:="<>"
            
            ' sets Microsoft Excel to cut, copy, extract, and sort objects with cells.
            Application.CopyObjectsWithCells = True
             
            Set rngCopyingArea = .Range("A1").Resize(40, iCurrentDocument)
            
            rngCopyingArea.Copy
            
            ' 1st copy
            ' gets LastUsedRow of Output sheet
            iLastRowOutput = oSheetOutput.Cells(oSheetOutput.Rows.Count, "A").End(xlUp).Row + 1
            
            ' adds PageBreak in case of non first record
            If iLastRowOutput > 2 Then
                oSheetOutput.HPageBreaks.Add before:=oSheetOutput.Cells(iLastRowOutput, "A")
            End If
            oSheetOutput.Activate
            
            oSheetOutput.Cells(iLastRowOutput, "A").Select
            oSheetOutput.Paste
            
            ' 2nd copy
            ' gets LastUsedRow of Output sheet
            iLastRowOutput = oSheetOutput.Cells(oSheetOutput.Rows.Count, "A").End(xlUp).Row + 1
            
            ' adds PageBreak in case of non first record
            If iLastRowOutput > 2 Then
                oSheetOutput.HPageBreaks.Add before:=oSheetOutput.Cells(iLastRowOutput, "A")
            End If
            
            oSheetOutput.Cells(iLastRowOutput, "A").Activate
            oSheetOutput.Paste
            
            .Activate
            .Range("A1").Select
            
            ' hide performed column
            .Columns(iCurrentDocument).Hidden = True
            
            If .AutoFilter.FilterMode Then
                .AutoFilter.ShowAllData
            End If
            
            .Columns(iCurrentDocument + 1).ColumnWidth = 40
            
        Next iCurrentDocument
    End With
End Sub
Вложения
Тип файла: rar KsiążkaAktów.rar (128.3 Кб, 2 просмотров)
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 21.04.2021, 04:24   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Код:
Sub M1()
    ActiveSheet.Shapes.Range(Array("Group 1")).Select
    Selection.Copy
    Worksheets("pdf").Paste
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не переходит на другой лист evdss Microsoft Office Excel 1 18.02.2014 08:20
ПОИСК И ВСТАВКА НА ДРУГОЙ ЛИСТ danika24 Microsoft Office Excel 16 23.04.2012 12:20
поиск и перенос на другой лист. artssp Microsoft Office Excel 34 01.12.2010 05:58
копирование в другой лист nisan Microsoft Office Excel 1 28.10.2010 19:44
Pascal цикл с Shape.Left and Shape.Top BanzoO Помощь студентам 1 13.12.2009 21:47