Помогите доработать макрос, неходимо создать файл в поверпоинт который будет создавать слайды презентации по диаграммам из ексель. Для этого нашел макрос который отлично выполняет данное задание, но нужно убрать окно выбора файла, так если необходимо прописать путь к одному файлу и после запуска макроса, из него данные должны тянуться. только вот никак не выходит самостоятельно сделать...по тому прошу совета/помощи.
[vba]
Код
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
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.Panes(2).Activate ActiveWindow.View.PasteSpecial ppPasteOLEObject, , , , , msoTrue ' ' изменение размера вставляемого объекта
With ActiveWindow.Selection.ShapeRange .ScaleWidth 1.1, msoFalse, msoScaleFromBottomRight .ScaleHeight 1.1, msoFalse, msoScaleFromBottomRight .ScaleWidth 1.1, msoFalse, msoScaleFromTopLeft .ScaleHeight 1.1, msoFalse, msoScaleFromTopLeft End With counter = counter + 1 End Sub
[/vba]
[moder]Епаны пилят, а если у Вас 10 страниц текста будет, Вы тоже вот так его сюда засунете? И еще есть специальные теги для макросов (кнопка #). Поправил все как надо. Вам пока предупреждение, в следующий раз стукну замечанием.
Доброго времени суток уважаемые форумчане.
Помогите доработать макрос, неходимо создать файл в поверпоинт который будет создавать слайды презентации по диаграммам из ексель. Для этого нашел макрос который отлично выполняет данное задание, но нужно убрать окно выбора файла, так если необходимо прописать путь к одному файлу и после запуска макроса, из него данные должны тянуться. только вот никак не выходит самостоятельно сделать...по тому прошу совета/помощи.
[vba]
Код
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
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.Panes(2).Activate ActiveWindow.View.PasteSpecial ppPasteOLEObject, , , , , msoTrue ' ' изменение размера вставляемого объекта
With ActiveWindow.Selection.ShapeRange .ScaleWidth 1.1, msoFalse, msoScaleFromBottomRight .ScaleHeight 1.1, msoFalse, msoScaleFromBottomRight .ScaleWidth 1.1, msoFalse, msoScaleFromTopLeft .ScaleHeight 1.1, msoFalse, msoScaleFromTopLeft End With counter = counter + 1 End Sub
[/vba]
[moder]Епаны пилят, а если у Вас 10 страниц текста будет, Вы тоже вот так его сюда засунете? И еще есть специальные теги для макросов (кнопка #). Поправил все как надо. Вам пока предупреждение, в следующий раз стукну замечанием.Ben