Arhn - архитектура программирования

Прокручиваемая диаграмма в Excel или Powerpoint 2007/2010

У меня есть диаграмма с большим количеством точек по оси X (например, ЭКГ).

Как сделать эту диаграмму объектом с горизонтальной прокруткой в Powerpoint 2007/2010? Если я просто вставлю его, он изменится по ширине и станет нечитаемым.

Я хочу сохранить высоту, включив горизонтальную полосу прокрутки для диаграммы.


Ответы:


1

Я не уверен, можно ли это сделать. Сказав это, я могу предложить вам интересную альтернативу. :)

Допустим, наша диаграмма выглядит так в Excel

введите здесь описание изображения

Щелкните правой кнопкой мыши на графике и выберите Copy. Откройте Ms Paint и вставьте эту картинку. Сохраните это изображение, скажем, как C:\MyChart.Jpg

Затем откройте MS Powerpoint и перейдите на вкладку Developer. (См. Снимок) На вкладке разработчика нажмите кнопку дополнительных элементов управления, выберите «Веб-браузер Microsoft» и вставьте этот элемент управления в соответствующий слайд. Размер его соответственно. Также поместите кнопку управления. Назовите его Show Chart или как-то иначе, как вы считаете правильным :)

введите здесь описание изображения

Дважды щелкните командную кнопку и вставьте туда этот код.

Private Sub CommandButton1_Click()
    WebBrowser1.Navigate "C:\MyChart.jpg"
End Sub

Теперь нажмите F5, чтобы запустить презентацию. Ваш экран будет выглядеть так.

введите здесь описание изображения

Когда вы нажмете командную кнопку, вы получите то, что хотели :)

введите здесь описание изображения

НЕДОСТАТКИ ЭТОГО МЕТОДА

1) Вы не можете редактировать диаграмму в MS Powerpoint. Вам нужно будет сделать это в Excel и повторить всю процедуру, чтобы сохранить его как изображение.

2) Вы не можете распространять свой PPT. Вам нужно будет отправить изображение отдельно с PPT, а также изменить код командной кнопки (при условии, что PPT и изображение остаются в одной папке) на

Private Sub CommandButton1_Click()
    WebBrowser1.Navigate ActivePresentation.Path & "\MyChart.jpg"
End Sub

ИЛИ

Вам нужно будет вставить файл xls в ppt и написать сложный код, чтобы извлечь диаграмму из файла excel и сохранить ее для пользователей temp directory. Затем вы можете использовать это изображение в Webbrowser1

19.04.2012
  • Спасибо. Это мысль, которая рассчитывает ;) 19.04.2012
  • @Siddharth Rout: Спасибо! Но перераспределение — это именно то, чего я хочу. И я не могу иметь изображение в виде отдельного файла (я должен передать его моему клиенту). Еще одна вещь, можем ли мы вставить лист/диаграмму Excel в качестве объекта ActiveX в PowerPoint? 20.04.2012
  • @Siddarth: еще один красивый пост. tumchaaditya, да, вы можете вставить лист Excel или диаграмму как объект ActiveX, но это то, что вы получаете, когда копируете/вставляете объекты Excel на слайды в PPT, и вы уже знаете, что это не подходит для ваших целей. И кстати, если ваша аудитория использует бесплатную программу просмотра PPT, даже вставленные объекты Excel могут не работать; средство просмотра не поддерживает ActiveX/OLE/как бы мы его ни называли на этой неделе. 20.04.2012
  • @tumchaaditya: я добавил новый пост. Загрузите файл и проверьте, работает ли он :) 21.04.2012

  • 2

    Поскольку это подошло к проблеме под другим углом, я публикую совершенно новый ответ :)

    Этот метод следует за моим последним комментарием

    Вам нужно будет встроить файл xls в ppt и написать сложный код, чтобы извлечь диаграмму из файла excel и сохранить ее во временном каталоге пользователя. Затем вы можете использовать это изображение в Webbrowser1

    ПОСЛЕДУЮЩИЕ

    @Siddharth Rout: Спасибо! Но перераспределение — это именно то, чего я хочу. И я не могу иметь изображение в виде отдельного файла (я должен передать его моему клиенту).

    Ваши заботы больше не должны вас беспокоить ;)

    РЕЖИМ ДИЗАЙНА

    В слайд PowerPoint вставьте объект Excel с диаграммой. Ваш слайд должен выглядеть так

    введите здесь описание изображения

    Теперь, как показано в моем другом ответе, вставьте «Веб-браузер Microsoft» и «Кнопку управления». Поместите веб-браузер над объектом Excel, чтобы скрыть его.

    Теперь ваш экран должен выглядеть так.

    введите здесь описание изображения

    Вставьте этот код и запустите презентацию... Вот и все... Действительно ;)

    КОД

    Option Explicit
    
    Private Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" _
    (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
    
    Private Const MAX_PATH As Long = 260
    
    Dim ImageFile As String
    
    Private Sub CommandButton1_Click()
        ExtractToTemp
        WebBrowser1.Navigate ImageFile
    End Sub
    
    Sub ExtractToTemp()
        Dim oSl As PowerPoint.Slide
        Dim oSh As PowerPoint.Shape
    
        Dim oXLApp As Object, oXLWB As Object, oXLSht As Object
        Dim mychart As Object
    
        Set oSl = ActivePresentation.Slides(1)
    
        Set oSh = oSl.Shapes(1)
    
        With oSh.OLEFormat.Object.Sheets(1)
            .Shapes(1).Copy
        End With
    
        '~~> Establish an EXCEL application object
        On Error Resume Next
        Set oXLApp = GetObject(, "Excel.Application")
    
        If Err.Number <> 0 Then
            Set oXLApp = CreateObject("Excel.Application")
        End If
        Err.Clear
        On Error GoTo 0
    
        oXLApp.Visible = False
    
        '~~> Open the relevant file
        Set oXLWB = oXLApp.Workbooks.Add
        Set oXLSht = oXLWB.Worksheets(1)
    
        oXLSht.Paste
    
        '~~> Save Picture Object
        ImageFile = TempPath & "Tester.jpg"
    
        If Len(Dir(ImageFile)) > 0 Then Kill ImageFile
    
        Set mychart = oXLSht.ChartObjects(1).Chart
        mychart.Export FileName:=ImageFile, FilterName:="jpg"
    
        '~~> Wait till the file is saved
        Do
            If FileExists(ImageFile) = True Then Exit Do
            DoEvents
        Loop
    
        '~~> Clean Up And Close Excel
        oXLWB.Close SaveChanges:=False
        oXLApp.Quit
    
        Set oXLWB = Nothing
        Set oXLApp = Nothing
    End Sub
    
    '~~> Get User's TempPath
    Function TempPath() As String
        TempPath = String$(MAX_PATH, Chr$(0))
        GetTempPath MAX_PATH, TempPath
        TempPath = Replace(TempPath, Chr$(0), "")
    End Function
    
    '~~> Function tot check if file exists
    Public Function FileExists(strFullPath As String) As Boolean
        On Error GoTo Whoa
        If Not Dir(strFullPath, vbDirectory) = vbNullString Then FileExists = True
    Whoa:
        On Error GoTo 0
    End Function
    

    ОБРАЗЕЦ ФАЙЛА ДЛЯ ТЕСТИРОВАНИЯ: Загрузите этот файл и запустите презентацию. Если вы видите график после нажатия на кнопку, значит он работает :)

    https://skydrive.live.com/redir.aspx?cid=cdd3f8abe20bbe3b&resid=CDD3F8ABE20BBE3B!162&parid=root

    20.04.2012
  • Я не могу этого сделать... Макрос выдает исключение: OLEFormat (неизвестный член): неверный запрос. Это свойство применяется только к объектам OLE. 24.04.2012
  • Ты с самого начала все запаковывал или запускаешь мой файл? 24.04.2012
  • Я создал все с самого начала. Как указано в вашей статье в блоге. 25.04.2012
  • Какую версию Windows вы используете. И какую версию MS Office вы используете? 25.04.2012
  • Windows 7 Professionalsl x64 Office 2007 25.04.2012
  • Это 64-битный офис или 32-битный офис? 25.04.2012
  • Я могу отправить вам файлы, созданные мной, если хотите. 25.04.2012
  • давайте продолжим это обсуждение в чате 25.04.2012
  • Мне жаль. Но сейчас я в компании, и чат здесь заблокирован. :( Могу я пока просто отправить вам свои файлы? 25.04.2012
  • конечно, вы можете :) Пожалуйста, заархивируйте их и загрузите на wikisend.com, а затем поделитесь ссылкой здесь :) 25.04.2012
  • этот сайт тоже заблокирован! :( на самом деле ни один файлообменник здесь не работает. не могли бы вы дать мне свой адрес электронной почты? 26.04.2012
  • Я нашел лучший способ сделать это. единственное, что он полностью в Excel, и я не могу перекодировать его в powerpoint. Я отправлю вам файл Excel на ваш идентификатор горячей почты (который я получил из вашего блога). 27.04.2012
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..