Office: VBA: Kopieren von Tabellenblättern in PPT

Helfe beim Thema VBA: Kopieren von Tabellenblättern in PPT in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; hallo zusammen, ich möchte die tabellenblätter in PPT kopieren mit einem VBA-skript, je blatt eine PPT-seite. die in der arbeitsmappe liegenden... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von rene_koeln, 15. Dezember 2008.

  1. rene_koeln Erfahrener User

    VBA: Kopieren von Tabellenblättern in PPT


    hallo zusammen,

    ich möchte die tabellenblätter in PPT kopieren mit einem VBA-skript, je blatt eine PPT-seite. die in der arbeitsmappe liegenden blätter sollen keine range von bspw. A1 bis D10 sein, sondern im pixel-format abgegriffen werden, also ein bild von 20 pixel x 10 zeilen und 80 pixel x 4 spalten, also 200 pixel mal 160 pixel.
    in einem nächsten schritt soll genau diese größe auf allen arbeitsblättern als druckformat festgelegt werden.

    kann jmd. helfen? ich würde mich auch über teillösungen freuen.
    bg, rene
     
    rene_koeln, 15. Dezember 2008
    #1
  2. rene_koeln Erfahrener User
    VBA: XLS -> PPT

    hallo zusammen,

    ich bin relativer VBA-anfänger und versuchs noch mal, mein problem zu schildern:

    bisher wurden die einzelnen tabellen mit folgendem skript XLS -> PPT übertragen:

    Sub PPTransfusion()

    Dim objPP As Object
    Dim objP As Object
    Dim objCL As Object
    Dim objS As Object
    Set objPP = CreateObject("PowerPoint.Application")
    Set objP = objPP.Presentations.Add
    For i = 3 To 1 Step -1
    Set objCL = objP.SlideMaster.CustomLayouts.Add(1)
    Set objS = objP.Slides.AddSlide(1, objCL)
    Worksheets(i).Range("A1:C4").CopyPicture
    With objS.Shapes.Paste
    .Top = 0
    .Left = 0
    .Width = 720
    End With
    objPP.Visible = True
    Next
    End Sub

    das soll jetzt anders werden!
    die tabellenausschnitte in XLS werden festgeschrieben. das kann ich erreichen, in dem ich entweder druckbereiche verwende (mit berechtigungen) und diese dann in PPT mit VBA übertragen lasse, und/oder indem ich einen pixelbereich in XLS mit berechtigungen vorschreibe und statt der range A1:C4 diesen pixel-bereich abgreife.
    das gewinnt an bedeutung, wenn die range A1:C4 sich vergrößert/verkleinert, indem sich die zellenhöhe durch schriftgrößen verschiebt. bspw. Überschrift 16 pt und text 12 pt - dann ist die abgegriffene range A1:C4 zwar die gleiche, das übertragene bild in ppt aber größer/kleiner. probier es aus!
    da mehr als 100 tabellenblätter in ppt übertragen werden sollen, hat natürlich keiner mehr die lust, die ppt (bzw. hier die einzelfolien mit den 'fotografierten' blättern) nachzubessern. und...die schriftgrößen in jeder PPT folie soll natürlich gleich groß sein, so viel ästhetik muss sein.

    hat jemand eine lösung / teillösung / tipp?

    schön wäre es darüber hinaus, wenn ich anstelle eines bildes, eine verknüpfung in PPT übertragen könnte.

    vielen dank im voraus,
    fürs lesen, ausprobieren, antworten!
    beste grüße, rene
     
    rene_koeln, 16. Dezember 2008
    #2
  3. miriki Erfahrener User
    Re: VBA: XLS -> PPT

    Ich hätte das gerne mal ausprobiert, aber die obigen beiden Zeilen erzeugen bei mir den Fehler 483: "Objekt unterstützt diese Eigenschaft oder Methode nicht". Ich benutze hier allerdings auch Office 2000, nicht 2003.

    Gruß, Michael
     
  4. miriki Erfahrener User

    VBA: Kopieren von Tabellenblättern in PPT

    Re: VBA: XLS -> PPT

    Ok, hab ich jetzt hinbekommen, siehe Anhang.

    Wenn ich das richtig verstanden habe, willst Du jetzt nicht "A1:C4" als Bitmap kopieren, sondern z.B. 0/0 bis 159/199 (in Pixeln) des Arbeitsblattes?

    Und was machst Du dann, wenn eben genau das passiert, was Du schreibst? Wenn sich der Bereich z.B. vergrößert, soll dann das Bild trotzdem nur den (kleineren) Ausschnitt kopieren und rechts und/oder unten abschneiden? Welchen Sinn hat das?

    Gruß, Michael

    PS: Hm, doch nicht "siehe Anhang", weil "tried to upload empty file" das Ergebnis beim Versuch des Uploads ist.
     
  5. rene_koeln Erfahrener User
    hallo michael!

    ja, XLS 2003, sorry, dass ich das vergessen habe. also das grundproblem ist, dass die XLS-sheets immer wieder aktualisert werden müssen: über verweise in andere dateien oder händisch. dabei ensteht bspw. Überschrift 16 pt und text 12 pt - dann ist die abgegriffene range A1:C4 zwar die gleiche, das übertragene bild in ppt aber größer/kleiner.

    automatisch abschneiden mit VBA-befehl wird nicht nötig sein, wenn ich in XLS bereits eine vorgabe machen kann (berechtigungen?).

    meine idee 1:
    statt eine zeile-spalte-range für die eingabe vorzugeben (die sich je nach zeilenhöhe in pixel verändert), eine pixel-range denen vorzugeben, die die eintragungen vornehmen.

    meine idee 2:
    möglicherweise sind druckbereiche besser, die aufgrund von berechtigungsvergabe in XLS vom user nicht geändert werden können.
    der user kann sich dann seinen eingabebereich mit seitenumbruchansicht anschauen. kann sein, dass das sogar der lösungsansatz ist, denn wenn dann über den druckbereich (vertikal) mehr daten stehen, kann das VBA in PPT auch eine neue folie erstellen.

    soweit zur situation und meinen ideen. in VBA umsetzen übersteigt jedoch mein wissen.

    du hast eine idee, die sich hier nicht hochladen lässt? versuch mal hier: mrs99@web.de

    cu rene
     
    rene_koeln, 17. Dezember 2008
    #5
  6. miriki Erfahrener User
    Richtig. Und wenn Du nur einen Pixel-Bereich kopierst, dann ist ggf. die 3. Zeile halb abgeschnitten. Und dann?

    Gruß, Michael
     
  7. rene_koeln Erfahrener User
    ich gebe bspw. 100 pixel vertikal vor, dass heißt: 100 pixel werden zum kopieren akzeptiert, das 101. pixel liegt in der verantwortung des users ;-)
    und es ist egal, ob user die 100 pixel mit 10 zeilen oder 100 zeilen ausfüllt.
    zugleich vergebe ich über berechtigungen vorgaben für schriftgrößen.

    mit druckbereichen ist das problem vll. eher gelöst...

    cu, rene
     
    rene_koeln, 17. Dezember 2008
    #7
  8. miriki Erfahrener User

    VBA: Kopieren von Tabellenblättern in PPT

    Schau mal, ob Du in dieser Richtung weiter kommst:

    Code:
    Sub Transfer_Shapes_to_PowerPoint()
    
        Dim obj_PowerPoint As Object
        Dim obj_Presentation As Object
        Dim obj_CustomLayout As Object
        Dim obj_Slide As Object
        Dim i As Long
        Dim yc As Long
        Dim xc As Long
    
        Set obj_PowerPoint = CreateObject("PowerPoint.Application")
        Set obj_Presentation = obj_PowerPoint.Presentations.Add
    
        For i = 3 To 1 Step -1
            'Set obj_CustomLayout = obj_Presentation.SlideMaster.CustomLayouts.Add(1)
            'Set obj_Slide = obj_Presentation.Slides.AddSlide(1, obj_CustomLayout)
            Set obj_Slide = obj_Presentation.Slides.Add(1, ppLayoutBlank)
            Worksheets(i).Range("A1:C4").CopyPicture xlScreen, xlPicture
            With obj_Slide.Shapes.Paste
                .Top = 0
                .Left = 0
                yc = .Height - 100: If (yc < 0) Then yc = 0
                xc = .Width - 160: If (xc < 0) Then xc = 0
                .PictureFormat.CropBottom = yc
                .PictureFormat.CropRight = xc
                .Width = 720
            End With
            obj_PowerPoint.Visible = True
        Next
    
    End Sub
    Du müßtest dann ggf. die beiden Kommentar-Zeilen für 2003 wieder aktivieren und dafür die Zeile dahinter (für 2000) auskommentieren.

    Ich kopiere hier das Shape mit dem Range A1:C4 und schneide es nachträglich zurecht, wenn es größer als 160x100 pixel ist. Erst danach(!) wird es skaliert auf 720 pixel Breite.

    Gruß, Michael
     
  9. rene_koeln Erfahrener User
    mmh, kein unterschied: verfünfache ich die zeilenhöhe einer zeile, ist das kopierte bild größer als das PPT-Sheet. ich habe das gefühl, in dieser richtung kommen wir nicht weiter. das muss doch zu lösen sein, anders.

    mit der verwendung von druckbereichen kann user in XLS sehen, wieweit user schreiben darf. sind die tabellen gefüllt, lege ich zunächst den druckbereich des blattes 1 für alle XLS-Blätter fest:

    Dim wksSheet As Worksheet
    For Each wksSheet In ActiveWorkbook.Worksheets
    If wksSheet.Name <ActiveSheet> PPT übertragen werden:

    Dim objPP As Object
    Dim objP As Object
    Dim objCL As Object
    Dim objS As Object
    Set objPP = CreateObject("PowerPoint.Application")
    Set objP = objPP.Presentations.Add
    For i = 3 To 1 Step -1
    Set objCL = objP.SlideMaster.CustomLayouts.Add(1)
    Set objS = objP.Slides.AddSlide(1, objCL)
    Worksheets(i).Range(ActiveSheet.PageSetup.PrintArea).CopyPicture
    With objS.Shapes.Paste
    .Top = 0
    .Left = 0
    .Width = 721
    End With
    objPP.Visible = True
    Next i

    allerdings müsste jedes "druckblatt" (wie in der seitenansicht) übertragen werden. das heißt, wird in XLS über den druckbereich hinaus geschrieben, soll in PPT für das 'drübernausgschriebene' ein neues sheet genommen werden.

    wie muss ich mein script verändern?
    weisst du / jmd. Rat?

    beste grüße
    rene
     
    rene_koeln, 18. Dezember 2008
    #9
  10. rene_koeln Erfahrener User
    im VBA war durch das absenden ein fehler, deshalb hier nochmal:

    'druckbereiche festlegen

    Dim wksSheet As Worksheet
    For Each wksSheet In ActiveWorkbook.Worksheets
    If wksSheet.Name <> ActiveSheet.Name Then
    wksSheet.PageSetup.PrintArea = ActiveSheet.PageSetup.PrintArea
    End If
    Next

    'übertragen in PPT

    Dim objPP As Object
    Dim objP As Object
    Dim objCL As Object
    Dim objS As Object
    Set objPP = CreateObject("PowerPoint.Application")
    Set objP = objPP.Presentations.Add
    For i = 3 To 1 Step -1
    Set objCL = objP.SlideMaster.CustomLayouts.Add(1)
    Set objS = objP.Slides.AddSlide(1, objCL)
    Worksheets(i).Range(ActiveSheet.PageSetup.PrintArea).CopyPicture
    With objS.Shapes.Paste
    .Top = 0
    .Left = 0
    .Width = 721
    End With
    objPP.Visible = True
    Next i

    wie kann ich VBA beibringen, alle druckbereiche pro XLS-einzelblatt in PPT abzubilden?
    Bsp.: umfasst in tabelle 1 der druckbereich 2 Seiten, sollen in PPT auch 2 Seiten generiert werden.

    dankbar für jede anregung,
    rene
     
    rene_koeln, 18. Dezember 2008
    #10
  11. miriki Erfahrener User
    Das kann ich hier nicht nachvollziehen.

    Ich habe die Zeilenhöhe der Zeilen 1 und 3 in Tabelle1 von 15 auf 75 erhöht. Das Bild auf Seite 1 der PP-Präsentation enthält daraufhin Zeile 1, 2 und ca. 10% von Zeile 3. Das Bild geht von +9 bis -6 auf der y-Achse. Auf der x-Achse geht es "seiten-füllend" von -12 bis +12.

    Gruß, Michael
     
  12. miriki Erfahrener User
    Aber damit stehst Du doch nach wie vor vor dem gleichen Problem! Ob du nun "a1:c4" oder "printarea" kopierst, es bleibt das Problem der Zeilenhöhe bzw. Spaltenbreite, die sich ändern kann.

    Gruß, Michael
     
  13. rene_koeln Erfahrener User

    VBA: Kopieren von Tabellenblättern in PPT

    dein skript probier ich am wochenende noch einmal, vielen dank!

    ++++++++

    da es generell diese probleme mit der zeilen-höhe gibt, wie auch mit den berechtigungen, die MS XLS anbietet,
    ist mir im chat mit dir eingefallen, dies mit druckbereichen zu umgehen.
    der vorteil: wird eine zeile 'höher' und das gesamtbild verschiebt sich nach unten (auch in PPT), dann wird der druckbereich überschritten und ein neues datenblatt genutzt - das neue blatt muss in ppt nur noch erzeugt werden.

    weisst du wie ich das machen kann?
    oder siehst du hierin keine lösung?

    es muss doch eine lösung geben...

    beste grüße, rene
     
    rene_koeln, 19. Dezember 2008
    #13
  14. miriki Erfahrener User
    Der Aufwand in dieser Richtung ist um einiges größer... Das (Verständnis?-) Problem liegt darin:

    Mit dem "Druckbereich" sagt Du letztendlich auch nur, welchen Zellen-Bereich Du auf dem Drucker sehen möchtest. Sagen wir mal, Du gibst als Druckbereich "A1:C4" an, dann ist das letztendlich auch nur ein Alias für das, was wir bislang mit der Konstanten versucht haben.

    Was Du jetzt meinst, ist der Seitenumbruch, den Excel dann irgendwann macht, wenn der Kram auf den Drucker ausgegeben wird. Das ist aber eine ganz andere Baustelle.

    Das würde darauf hinauslaufen, nicht nur den Druckbereich zu kopieren, sondern auch noch versuchen herauszufinden, wo Seitenumbrüche innerhalb des Druckbereichs erfolgen würden, wenn es auf dem aktuellen Drucker(!) ausgegeben werden würde. Ein korrekter Transfer in Richtung PP würde also auch davon abhängig sein, wie der Drucker in XL gerade aktuell eingestellt ist.

    Das halte ich nicht für einen sinnvoll gangbaren Weg. Der bisherige (Bereich kopieren und ggf. abschneiden) scheint mir da schon irgendwie sinnvoller.

    Gruß, Michael
     
  15. rene_koeln Erfahrener User
    ich gebe den XLS druckbereich in höhe/breite vor und setze den so, dass es passt!
    das ist doch nicht allein abhängig vom drucker, oder bin ich da falsch informiert: erst gebe ich einen druckbereich an, dann drucken-taste drücken, dann wird die anpassung an den drucker vorgenommen - das geschieht im drucker-coeque.
    mein PPT muss also lediglich wissen: nimm und erzeuge nicht nur erste seite, sondern alle weiteren vertikal.

    sollte es sich tatsächlich mit der druckanpassung so verhalten, wie du sagst - was ich nicht glaube - dann (neue baustelle) müsste ein virtueller druck erzeugt werden, der dann automatisch in PPT ausgeführt wird. virtuell, so etwas wie beim PDF drucken.

    beste grüße, rene
     
    rene_koeln, 19. Dezember 2008
    #15
Thema:

VBA: Kopieren von Tabellenblättern in PPT

Die Seite wird geladen...
  1. VBA: Kopieren von Tabellenblättern in PPT - Similar Threads - VBA Kopieren Tabellenblättern

  2. VBA: 2 Tabellenblätter Inhalte kopieren und in eine Excelmappe einfügen und als .xlsm speichern

    in Microsoft Excel Hilfe
    VBA: 2 Tabellenblätter Inhalte kopieren und in eine Excelmappe einfügen und als .xlsm speichern: Hallo Excel-Freaks, ich bin gerade mit einem Code beschäftigt und komme nicht weiter. Gewünscht wäre ein Makro: Zwei Tabellenblätter Inhalte kopieren und in eine Excelmappe einfügen und als .xlsm...
  3. VBA Code Tabellenblatt kopieren und UserForm

    in Microsoft Excel Hilfe
    VBA Code Tabellenblatt kopieren und UserForm: Hallo, ich hoffe mir kann jemand helfen. Schon mal vielen Dank für die Unterstützung. Folgende Thematik: In dem Blatt 1 ist ein ComandButton. Mit Klick soll über VBA folgendes abgefragt...
  4. Zeilen aufgrund von bestimmten Informationen in anderes Tabellenblatt kopieren

    in Microsoft Excel Hilfe
    Zeilen aufgrund von bestimmten Informationen in anderes Tabellenblatt kopieren: Hallo zusammen, ich bin erst vor ein paar Tagen auf die Excel VBA gestoßen und kenne mich deswegen leider so gut wie gar nicht aus. Ich würde gerne aus den Tabellen 3 - 11, bestimmte Zeilen in die...
  5. VBA Zellbereiche anhand einer Suchvariable in neues Tabellenblatt kopieren

    in Microsoft Excel Hilfe
    VBA Zellbereiche anhand einer Suchvariable in neues Tabellenblatt kopieren: Hallo Ihr Lieben, leider bin ich in VBA nicht sehr gut bewandert und arbeite meistens nach Search, try and error, oder mit Formeln. Normalerweise werde ich so auch meistens fündig, dank der vielen...
  6. [VBA] Daten auf Grund von Variable auf anderes Tabellenblatt kopieren

    in Microsoft Excel Hilfe
    [VBA] Daten auf Grund von Variable auf anderes Tabellenblatt kopieren: Hallo zusammen, vorab großes Lob an das Forum, ich konnte schon einige Dinge sinnvoll für mich nutzen, meine VBA Skills beschränken sich sonst eher auf das Anpassen von aufgezeichneten Makros...
  7. Spalten kopieren mit VBA und im neuen Tabellenblatt nebeneinander auflisten

    in Microsoft Excel Hilfe
    Spalten kopieren mit VBA und im neuen Tabellenblatt nebeneinander auflisten: Hallo, brauche nochmals Hilfe, da ich mich in VBA nicht gut auskenne. Folgendes Problem, in meiner Datei sind viele Sheets, die alle gleich aufgebaut sind. In einer anderen Datei können mehr oder...
  8. VBA Werte aus Tabellenblätter kopieren WENN

    in Microsoft Excel Hilfe
    VBA Werte aus Tabellenblätter kopieren WENN: Hallo zusammen, Meine Ausgangssituation: Verschiedene Registerkarten mit Materiallisten, je nach System. Ganz vorne eine Übersichtsregisterkarte, in welcher die Systeme und Anzahl ausgesucht...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden