Thema Datum  Von Nutzer Rating
Antwort
27.03.2016 22:26:50 Simon
NotSolved
29.03.2016 13:40:47 steffesj
NotSolved
Rot Variablendeklaration in VBA (Powerpoint)
30.03.2016 01:11:41 Gast21162
NotSolved

Ansicht des Beitrags:
Von:
Gast21162
Datum:
30.03.2016 01:11:41
Views:
638
Rating: Antwort:
  Ja
Thema:
Variablendeklaration in VBA (Powerpoint)

Hallo steffesj,

mein Problem ist es, das ich keine Möglichkeit habe in einer einfachen Art und Weise die gewünschten (variablen) Begriffe in einem Text zu integrieren. Ich würde mir wünschen, das ich die oben angesprochen Variablen (z.b. $$ORT$$) innerhalb eines Textblocks (=shape) unterbringen kann. Dadurch hätte man den Vorteil, den Begriff nur einmal innerhalb einer Präsentation verändern zu müssen, und nicht überall einzeln. (vgl. Variablen_und_Konstanten)

Aktuelle Lösung:  3 innernader verschachtetlte Schleifen, d.h. die äußerste läuft durch die einzelnen zeilen der Excel_Source, die Schleife darunter über alle Folien, und die innerste Schleife über alle Shapes innerhalb der jeweiligen Folie.

Sub ReplaceText()
    'intialize variables
    Dim oSlide As Slide
    Dim oShape As Shape
    Dim oTxtRng As TextRange
    Dim oTmpRng As TextRange
    Dim strExcelFilePath As String
    Dim iCounter As Integer
    
    'Preparation to read Excel_Source file
    strExcelFilePath = ActivePresentation.Path & "\Excel_Source.xlsm"
    Set EX = CreateObject("Excel.Application")
    EX.Workbooks.Open FileName:=strExcelFilePath, ReadOnly:=True
    iCounter = 2
    
    NextValue = EX.Workbooks("Excel_Source.xlsm").Sheets(1).Cells(iCounter, 2)
    
    If IsEmpty(NextValue) Then
        MsgBox ("Warning! Cell B2 of 'Excel_Source.xlsm' is empty. Please check your input.")
    Else
        
        While Not IsEmpty(NextValue)
            'get data from excel source file
            'set words that has to be replaced from excel source file
            oFindThat = EX.Workbooks("Excel_Source.xlsm").Sheets(1).Cells(iCounter, 1)
            ORelpaceWithThis = EX.Workbooks("Excel_Source.xlsm").Sheets(1).Cells(iCounter, 2)
          
            'loop over every slide and shape
            For Each oSlide In Application.ActivePresentation.Slides
                For Each oShape In oSlide.Shapes
                    If oShape.HasTextFrame Then
                        Set oTxtRng = oShape.TextFrame.TextRange
                        'search for oFindThat and replace it with ORelpaceWithThis
                        Set oTmpRng = oTxtRng.Replace(oFindThat, ORelpaceWithThis)
                        Do While Not oTmpRng Is Nothing
                            Set oTxtRng = oTxtRng.Characters(oTmpRng.Start + oTmpRng.Length, oTxtRng.Length)
                            Set oTmpRng = oTxtRng.Replace(oFindThat, ORelpaceWithThis)
                        Loop
                    End If
                Next oShape
            Next oSlide
            iCounter = iCounter + 1
            NextValue = EX.Workbooks("Excel_Source.xlsx").Sheets(1).Cells(iCounter, 2)
        Wend 'End of WhileLoop
    End If
    EX.Quit
End Sub

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
27.03.2016 22:26:50 Simon
NotSolved
29.03.2016 13:40:47 steffesj
NotSolved
Rot Variablendeklaration in VBA (Powerpoint)
30.03.2016 01:11:41 Gast21162
NotSolved