powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Макрос для переноса диаграм и таблиц из execl в powerpoint
25 сообщений из 49, страница 1 из 2
Макрос для переноса диаграм и таблиц из execl в powerpoint
    #34797496
PlayerP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть Execl файл, в нём таблицы и диаграммы. Нужно что бы с помощью макроса, таблицы и диаграммы переносились в PowerPoint нажатием на кнопку. Тоесть автоматическое создание презентации. Я ещё только начинающий программер в VBA.
...
Рейтинг: 0 / 0
Макрос для переноса диаграм и таблиц из execl в powerpoint
    #34799270
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если получится, то поделись. (на мыло или на форум)
Немного эгоистично, но вещь нужная, а разбираться некогда.
Сейчас делаю так. Есть файл Эксель, в котором нарисованы все шаблоны диаграмм и таблиц на каждом листе ровно на печатную страницу. Есть файл ПоверПоинт, в котором связанные ссылки на все печатные диапазоны файла Эксель. Таким образом нужно только обновить данные в Экселе, потом открыть Повер, зайти в правка - связи, выделить все и нажать обновить и все связи обновятся. Причём удобно, что при отправке такая презентация содержит только рисунки диаграмм, в то время как при обычном копировании из Эксель Диаграммы вместе с ней в Презентацию подвязывается весь файл Эксель и его потом можно открыть двойным щелчком по диаграмме.
...
Рейтинг: 0 / 0
Макрос для переноса диаграм и таблиц из execl в powerpoint
    #34799610
PlayerP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот что сочинил мой приятель. Поиск и вставка диаграмм идёт по отдельным листам. А мне надо чтобы поиск шёл в листе где находятся таблицы и диаграммы.
Sub ImportGraphs()
'Dim xlApp As Excel.Application
Dim counter As Integer
Dim fileName As String

Dim xlApp As Object
Dim xlWorkbook As Object
Set xlApp = CreateObject("Excel.Application")

fileName = xlApp.GetOpenFilename("Excel Files (*.xls), *.xls")

If fileName Like "" Then
MsgBox ("Выберите файл для импортирования данных")
Else
xlApp.Workbooks.Open (fileName)

Set xlWorkbook = xlApp.ActiveWorkbook
xlApp.Visible = True

counter = 1

For counter = 1 To xlWorkbook.Sheets.Count
If xlWorkbook.Sheets(counter).Name Like "Диаграмма*" Then
xlWorkbook.Sheets(counter).ChartArea.Copy
ActivePresentation.Slides(counter).Select
ActiveWindow.View.Paste
End If
Next
End If

Set xlWorkbook = Nothing
xlApp.Quit
Set xlApp = Nothing
End Sub
...
Рейтинг: 0 / 0
Макрос для переноса диаграм и таблиц из execl в powerpoint
    #34801679
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот немного потделал

Option Explicit

Sub ImportGraphs()
Dim counter As Integer
Dim fileName As String
Dim i

Dim xlApp As Object
Dim xlWorkbook As Object
Dim xlSheet As Object

Set xlApp = CreateObject("Excel.Application")

fileName = xlApp.GetOpenFilename("Excel Files (*.xls), *.xls")

If fileName Like "" Then
MsgBox ("Âûáåðèòå ôàéë äëÿ èìïîðòèðîâàíèÿ äàííûõ")
Else
xlApp.Workbooks.Open (fileName)

Set xlWorkbook = xlApp.ActiveWorkbook
xlApp.Visible = True

counter = 1

For Each xlSheet In xlWorkbook.Sheets

If xlSheet.Name Like "Äèàãðàììà*" Then
xlSheet.ChartArea.Copy
ActivePresentation.Slides.Add(Index:=counter, Layout:=ppLayoutBlank).Select
ActiveWindow.View.PasteSpecial ppPasteOLEObject, , , , , msoTrue
counter = counter + 1
Else

If xlSheet.ChartObjects.Count > 0 Then

For i = 1 To xlSheet.ChartObjects.Count
xlSheet.ChartObjects(i).Chart.ChartArea.Copy
ActivePresentation.Slides.Add(Index:=counter, Layout:=ppLayoutBlank).Select
ActiveWindow.View.PasteSpecial ppPasteOLEObject, , , , , msoTrue
counter = counter + 1
Next

End If

End If
Next

End If

Set xlWorkbook = Nothing
xlApp.Quit
Set xlApp = Nothing
End Sub
...
Рейтинг: 0 / 0
Макрос для переноса диаграм и таблиц из execl в powerpoint
    #34801682
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
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.
Option Explicit

Sub ImportGraphs()
Dim counter As Integer
Dim fileName As String
Dim i

Dim xlApp As Object
Dim xlWorkbook As Object
Dim xlSheet As Object

Set xlApp = CreateObject("Excel.Application")

fileName = xlApp.GetOpenFilename("Excel Files (*.xls), *.xls")

If fileName Like "" Then
MsgBox ("Выберите файл для импортирования данных")
Else
xlApp.Workbooks.Open (fileName)

Set xlWorkbook = xlApp.ActiveWorkbook
xlApp.Visible = True

counter =  1 

For Each xlSheet In xlWorkbook.Sheets
 
  If xlSheet.Name Like "Диаграмма*" Then
      xlSheet.ChartArea.Copy
      ActivePresentation.Slides.Add(Index:=counter, Layout:=ppLayoutBlank).Select
      ActiveWindow.View.PasteSpecial ppPasteOLEObject, , , , , msoTrue
      counter = counter +  1 
    Else
     
     If xlSheet.ChartObjects.Count >  0  Then
       
       For i =  1  To xlSheet.ChartObjects.Count
         xlSheet.ChartObjects(i).Chart.ChartArea.Copy
         ActivePresentation.Slides.Add(Index:=counter, Layout:=ppLayoutBlank).Select
         ActiveWindow.View.PasteSpecial ppPasteOLEObject, , , , , msoTrue
         counter = counter +  1 
       Next
     
     End If
     
   End If
Next

End If

Set xlWorkbook = Nothing
xlApp.Quit
Set xlApp = Nothing
End Sub
...
Рейтинг: 0 / 0
Макрос для переноса диаграм и таблиц из execl в powerpoint
    #34801762
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Даже так
Option Explicit
' Импортирует все графики в презентацию
Dim counter As Long
Sub ImportGraphs()
Dim fileName As String
Dim i

Dim xlApp As Object
Dim xlWorkbook As Object
Dim xlSheet As Object

Set xlApp = CreateObject("Excel.Application")

fileName = xlApp.GetOpenFilename("Excel Files (*.xls), *.xls")

If fileName Like "" Then
MsgBox ("Выберите файл для импортирования данных")
Else
xlApp.Workbooks.Open (fileName)

Set xlWorkbook = xlApp.ActiveWorkbook
xlApp.Visible = True

counter = 1

For Each xlSheet In xlWorkbook.Sheets
If xlSheet.Name Like "Диаграмма*" Then
xlSheet.ChartArea.Copy
PasteGraphs
Else
If xlSheet.ChartObjects.Count > 0 Then
For i = 1 To xlSheet.ChartObjects.Count
xlSheet.ChartObjects(i).Chart.ChartArea.Copy
PasteGraphs
Next
End If

End If
Next

End If

Set xlWorkbook = Nothing
xlApp.Quit
Set xlApp = Nothing
End Sub

Sub PasteGraphs()

ActivePresentation.Slides.Add(Index:=counter, Layout:=ppLayoutBlank).Select
ActiveWindow.View.PasteSpecial ppPasteOLEObject, , , , , msoTrue

' изменение размера вставленного объекта
With ActiveWindow.Selection.ShapeRange
.ScaleWidth 1.2, msoFalse, msoScaleFromBottomRight
.ScaleHeight 1.2, msoFalse, msoScaleFromBottomRight
.ScaleWidth 1.2, msoFalse, msoScaleFromTopLeft
.ScaleHeight 1.2, msoFalse, msoScaleFromTopLeft
End With

counter = counter + 1

End Sub
...
Рейтинг: 0 / 0
Макрос для переноса диаграм и таблиц из execl в powerpoint
    #34801765
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да шо за нах...
DeggasadДаже так
Код: plaintext
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.
Option Explicit
' Импортирует все графики в презентацию
Dim counter As Long
Sub ImportGraphs()
Dim fileName As String
Dim i

Dim xlApp As Object
Dim xlWorkbook As Object
Dim xlSheet As Object

Set xlApp = CreateObject("Excel.Application")

fileName = xlApp.GetOpenFilename("Excel Files (*.xls), *.xls")

If fileName Like "" Then
MsgBox ("Выберите файл для импортирования данных")
Else
xlApp.Workbooks.Open (fileName)

Set xlWorkbook = xlApp.ActiveWorkbook
xlApp.Visible = True

counter =  1 

For Each xlSheet In xlWorkbook.Sheets
  If xlSheet.Name Like "Диаграмма*" Then
      xlSheet.ChartArea.Copy
      PasteGraphs
    Else
     If xlSheet.ChartObjects.Count >  0  Then
       For i =  1  To xlSheet.ChartObjects.Count
         xlSheet.ChartObjects(i).Chart.ChartArea.Copy
         PasteGraphs
       Next
     End If
     
   End If
Next

End If

Set xlWorkbook = Nothing
xlApp.Quit
Set xlApp = Nothing
End Sub

Sub PasteGraphs()
         
   ActivePresentation.Slides.Add(Index:=counter, Layout:=ppLayoutBlank).Select
   ActiveWindow.View.PasteSpecial ppPasteOLEObject, , , , , msoTrue
        
   ' изменение размера вставленного объекта
    With ActiveWindow.Selection.ShapeRange
        .ScaleWidth  1 . 2 , msoFalse, msoScaleFromBottomRight
        .ScaleHeight  1 . 2 , msoFalse, msoScaleFromBottomRight
        .ScaleWidth  1 . 2 , msoFalse, msoScaleFromTopLeft
        .ScaleHeight  1 . 2 , msoFalse, msoScaleFromTopLeft
    End With
    
    counter = counter +  1 

End Sub


З.ы.:
Модератору: удалите пожалуйста мои сообщения котоые не обрамлены кодом
...
Рейтинг: 0 / 0
Макрос для переноса диаграм и таблиц из execl в powerpoint
    #34802707
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прилагаю файл с переделанными вариантами на всякий случай
...
Рейтинг: 0 / 0
Макрос для переноса диаграм и таблиц из execl в powerpoint
    #34802713
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но самое главное спасибо PlayerP за то, что он подтокнул меня сделать, то, на что я давно не решался, а хотелось. Вообщем кому нужно выкладываю пример процедуры, которая предлагает выбрать один из открытых файлов, выбирает из этих файлов области печати со всех листов, на которых присвоены области печати и вставляет их как связанные объекты в Презентацию добавляя при этом слайды по порядку.
Предполагается что пользователь заблаговременно задал области печати размером примерно на альбомный печатный лист на всех листах которые хотел перенести в презентацию, а также убрал на них сетку и разметку страниц дабы не портить внешний вид слайда.

Буду рад предложениям и улучшениям, возможно новым идеям
...
Рейтинг: 0 / 0
Макрос для переноса диаграм и таблиц из execl в powerpoint
    #34802850
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К концу дня появились обновления!
Всякие проверки там и полезности, типа ввода первого номера слайда, выравнивание размера, вообщем кому надо - пользуйтесь, по крайней мере для примера. 3-4 месяца назад я бы многое за такой примерчик отдал бы (ну да это чувствас).
...
Рейтинг: 0 / 0
Макрос для переноса диаграм и таблиц из execl в powerpoint
    #34803988
PlayerP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Deggasad ты гений!
Но есть не большие проблемы. В файле Excel я указал несколько областей печати, запустил макрос и, и не работает. То есть не вставляет указанные области печати в отдельные листы презентации. Deggasad как сделать так чтобы указанные области печати вставлялись в отдельные листы презентации???
...
Рейтинг: 0 / 0
Макрос для переноса диаграм и таблиц из execl в powerpoint
    #34804314
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) проверте действительно ли вы задали области печати (лучше всего их задавать с помощью меню файл - область печати задать), тогда у вас должен появиться диапазон область печати в раскрывающемся списке адресов, как в прилагаемом рисунке.

2) Возможно увас этот диапазон будет называться по другому, наприер если у вас английский Эксель, то он наверное будет называться "Print_Area"
В этом случае замените в строке кода
Код: plaintext
            xlSheet.Range("Область_печати").Copy
имя "Область_печати" на ваше имя. Я даже думаю, что в любом случае попробуйте подставить "Print_Area", возможно поможет (у меня нет других версий эксель чтобы попробовать).
...
Рейтинг: 0 / 0
Макрос для переноса диаграм и таблиц из execl в powerpoint
    #34805157
PlayerP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Deggasad дела в том что если я указываю 1 область печати то данная область вставляться в PowerPoint, но если я добавляю область печати, макрос перестаёт работать и при этом пишет что он всё импортировал, а лист остался пустой в презентации.
...
Рейтинг: 0 / 0
Макрос для переноса диаграм и таблиц из execl в powerpoint
    #34805172
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не пойму, может файл выложите который не хочет импортироваться.
...
Рейтинг: 0 / 0
Макрос для переноса диаграм и таблиц из execl в powerpoint
    #34805183
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DeggasadНе пойму, может файл выложите который не хочет импортироваться.
Только с вашими областями, которые вы добавили
...
Рейтинг: 0 / 0
Макрос для переноса диаграм и таблиц из execl в powerpoint
    #34805597
PlayerP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Этот файл не могу выложить, чревато последствиями для меня.
...
Рейтинг: 0 / 0
Макрос для переноса диаграм и таблиц из execl в powerpoint
    #34805650
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PlayerPЭтот файл не могу выложить, чревато последствиями для меня.

Что же блин так сложно всегда.
Ну неужели вы не можете создать файл с 3-мя листами попробовать воспроизвести своё горе на этих трёх листах, так чтобы поменьше весил файл, но при этом была понятна ваша проблема. То есть ваши секреты мне не нужны, как раз наоборот я не собираюсь качать Мегафайл мегабайт в 20. Нужен короткий пример с абстракными данными, который наглядно иллюстрирует что у вас не получается. Или вы не хотите напрягаться делать такой пример?
...
Рейтинг: 0 / 0
Макрос для переноса диаграм и таблиц из execl в powerpoint
    #34805923
PlayerP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот абстрактный пример (смотрите вложение). Нужно чтобы таблицы и диаграммы импортировалась в презентацию.
...
Рейтинг: 0 / 0
Макрос для переноса диаграм и таблиц из execl в powerpoint
    #34806150
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я же просил изобразить твои попытки, а ты скинул две диаграммы - на мол, как будто одолжение сделал.
Короче, я выкладываю как бы сделал я, если использовать предложенную мной идею. Один лист экселя - это один слайд. Таким образом на каждом листе мы создаём всё что нужно слайду на одной странице с альбомной ориентацией и желательно 100% масштабом (это чтобы не путаться), т.е. сдесь пишем название, делаем и размещаем по слайду диаграмки, таблички, надписи, автофигуры. Задаём область печати ровно на одну страницу (меню файл - область печати - задать), не забываем убрать сетку с листа или сделать нужную заливку и выйти из режтма разметки страницы а то полосы синие на слайде будут. И это всё попторяем для всех листов - слайдов, при этом на листах может находится сколько угодно вспомогательных данных главное чтобы они не попадали в область печати. А потом запускаем макрос, который я последним прилагал и он должен выбрать со свех листов выбранной книги области печати листов-слайдов и связать их со слайдами презентации. При изменении в файле Эксель данных, можно просто обновить все связи в презентации.
...
Рейтинг: 0 / 0
Макрос для переноса диаграм и таблиц из execl в powerpoint
    #34806179
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А чтобы просто выбрать все диаграммы и поместить на слайды, я там где-то раньше решение прилагал! - просто дорабатывать не стал, так как посчитал менее интересным.
...
Рейтинг: 0 / 0
Макрос для переноса диаграм и таблиц из execl в powerpoint
    #34806182
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DeggasadА чтобы просто выбрать все диаграммы и поместить на слайды, я там где-то раньше решение прилагал! тут ссылка была :) - просто дорабатывать не стал, так как посчитал менее интересным.
...
Рейтинг: 0 / 0
Макрос для переноса диаграм и таблиц из execl в powerpoint
    #34806191
PlayerP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Извени я просто тебя не понял. Вот именно мне нужно что бы таблицы и диаграммы брались с одного листа. Иначе предаться переделывать основной файл. А он очень большой, иметься виду много таблиц и диаграмм.
...
Рейтинг: 0 / 0
Макрос для переноса диаграм и таблиц из execl в powerpoint
    #34806268
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PlayerPИзвени я просто тебя не понял. Вот именно мне нужно что бы таблицы и диаграммы брались с одного листа. Иначе предаться переделывать основной файл. А он очень большой, иметься виду много таблиц и диаграмм.

Моё мнение такое что всё равно с этим где-то работать. Не разберёшь и не упорядочишь в экселе, придётся возится в поинте. Но это тебе уже решать.

Вариант для диаграмм я уже давал, осталось пробежаться по таблицам. Целесообразно наверное дать всех нужным таблицам имена, например (Лист1!таблица1 , Лист1!таблица2 ... , Лист5!таблица10), Это вставка - имя - присвоить или просто набисать в окошке где адрес ячейки пишется. Потом пробегаться по всем именам в файле и если в нём присутствует слово таблица, то копируем его.
Вот пока писал пост решил по быстрому реализовать. только не забывайте перед именами название листов указывать, а то не будут имена выбираться

Код: plaintext
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.
Option Explicit
' Импортирует все графики в презентацию
Dim counter As Long
Sub ImportGraphsFromCloseFile()
Dim fileName As String
Dim i

Dim xlApp As Object
Dim xlWorkbook As Object
Dim xlSheet As Object
Dim nm As Object

' тут ничего лучшего не предумал, т.к. для корректной работы макроса нужно, чтобы
' курсор стоял именно на слайде а не там где превьюшки
' поэтому на всякий случа передёргиваю режим
With Application.ActiveWindow
  ActiveWindow.ViewType = ppViewSlide
  ActiveWindow.ViewType = ppViewNormal
End With

Set xlApp = CreateObject("Excel.Application")

fileName = xlApp.GetOpenFilename("Excel Files (*.xls), *.xls")

If fileName Like "" Then
MsgBox ("Выберите файл для импортирования данных")
Else
xlApp.Workbooks.Open (fileName)

Set xlWorkbook = xlApp.ActiveWorkbook
xlApp.Visible = True

counter =  1 

For Each xlSheet In xlWorkbook.Sheets
  If xlSheet.Name Like "Диаграмма*" Then
      xlSheet.ChartArea.Copy
      PasteGraphs
    Else
     If xlSheet.ChartObjects.Count >  0  Then
       For i =  1  To xlSheet.ChartObjects.Count
         xlSheet.ChartObjects(i).Chart.ChartArea.Copy
         PasteGraphs
       Next
     End If
       
       For Each nm In xlSheet.Names
         If nm.Name Like "*таблица*" Then
          nm.RefersToRange.Copy
          PasteGraphs
         End If
       Next
       

     
   End If
Next

End If

Set xlWorkbook = Nothing
xlApp.Quit
Set xlApp = Nothing
End Sub

Sub PasteGraphs()
         
   ActivePresentation.Slides.Add(Index:=counter, Layout:=ppLayoutBlank).Select
   ActiveWindow.View.PasteSpecial ppPasteOLEObject, , , , , msoTrue
        
   ' изменение размера вставленного объекта
    With ActiveWindow.Selection.ShapeRange
        .ScaleWidth  1 . 2 , msoFalse, msoScaleFromBottomRight
        .ScaleHeight  1 . 2 , msoFalse, msoScaleFromBottomRight
        .ScaleWidth  1 . 2 , msoFalse, msoScaleFromTopLeft
        .ScaleHeight  1 . 2 , msoFalse, msoScaleFromTopLeft
    End With
    
    counter = counter +  1 

End Sub
...
Рейтинг: 0 / 0
Макрос для переноса диаграм и таблиц из execl в powerpoint
    #34832237
PlayerP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот мой вариант вставления таблиц м диаграмм. Пока конечно в сыром виде, но я над этим работаю.
Возник вопрос, как сделать так что бы презентация создавалась на готовом шаблоне.
...
Рейтинг: 0 / 0
Макрос для переноса диаграм и таблиц из execl в powerpoint
    #34834518
PlayerP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Очередная редакция.
...
Рейтинг: 0 / 0
25 сообщений из 49, страница 1 из 2
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Макрос для переноса диаграм и таблиц из execl в powerpoint
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]