Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: sVerweis in VBA in PP auf Datein in Excel Datei

sVerweis in VBA in PP auf Datein in Excel Datei
13.06.2017 10:58:22
Niklas
Hallo ihr lieben,
ich verzweifel gerade ein bisschen. Ich habe von VBA nur Grundkenntnisse und versuche seit Tagen folgendes:
Ich habe eine dynamische Excel Datei, in der laufend neue Daten eingetragen werden: neue Mitarbeiter mit Funktion, Geburtsdatum etc.
Zusätzlich habe ich eine PowerPoint Folie gebaut, in der entsprechende Textfelder sind. Ich möchte nun, dass wenn in der PowerPoint Folie der Name des Mitarbeiters eingetragen wird, alle anderen Daten per sVerweis aus der Excel Datei gezogen werden.
Dazu habe ich mir folgendes überlegt, was jedoch nicht funktionieren will (Es kommt immer der Laufzeitfehler 1004):
Sub vba_sverweis()
Dim wb As Workbook, wks As Worksheet
Dim Folie As Slide, Textfeld As Shape
Set wb = Workbooks.Open(FileName:="C:\MA\Watchlist_DUMMY.xlsx", ReadOnly:=True)
Set wks = wb.Worksheets("Mitarbeiter Stand 01.01.2017")
Set Folie = ActivePresentation.Slides(1)
Set Textfeld = Folie.Shapes("Text Placeholder 6")
Textfeld.TextFrame.TextRange.Text = WorksheetFunction.VLookup(Folie.Shapes("Text Placeholder 8"), wks.Range("$E:$G"), 2, False).Text
End Sub
Die "Test Placeholder X" stimmen so, das sind die Textfelder, in die die Daten sollen bzw. das Textfeld, in dem der Name des Mitarbeiters steht; das habe ich mir mit folgendem Makro auslesen lassen:
Public Sub Namenfinden()
MsgBox ActiveWindow.Selection.ShapeRange.Name
End Sub

Ich hoffe ihr könnt mir helfen, vielen Dank!
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: sVerweis in VBA in PP auf Datein in Excel Datei
13.06.2017 12:17:42
mmat
Hallo,
das Problem scheint daher zu kommen, dass PP garnet weiß, was ein Workbook ist.
vg, MM
Verweis setzen
13.06.2017 16:34:05
Max2
Hallo,
du musst in PowerPoint einen Verweis auf die Objekt Bibliothek von Excel setzen.
Ich empfehle dir aber, die PowerPoint aus Excel heraus zu erstellen bzw. zu bearbeiten...
Dadurch hast du mehr Kontrolle und es ist einfacher.
Auch dann musst du einen Verweis setzten, aber eben auf die PowerPoint Library.
Verweise kannst du wie folgt setzen:
[Alt + F11] --> Extras(im Menüband oben) --> Verweise --> Haken(bei benötigtem Verweis) --> OK

Anzeige
AW: sVerweis in VBA in PP auf Datein in Excel Datei
13.06.2017 21:37:41
fcs
Hallo Niklas,
wie bereits von mmat geschrieben muss du im PowerPoint-Makro erst die Excel-Umgebung kreieren/aufrufen bevor du per VBA in Excel Objekte bearbeiten kannst.
Für die Suche nach Einträgen und das Auslesen von Daten ist die Funktion "Match" unter VBA einfacher zu handhaben als "vLookup"-insbesondere was die Behandlung von Fehlern angeht, wenn der Suchbegriff nicht vorhanden ist.
LG
Franz
'Bearbeitet unter PowerPoint 2010 - MS Office Professional 2010
Sub vba_sverweis()
Dim objAppExcel As Object ' Excel.Application
Dim wb As Object ' Excel.Workbook
Dim wks As Object 'Excel.Worksheet
Dim Folie As Slide, Textfeld As Shape
Dim varZeile, varWert As Variant, varSuch As Variant
Dim bolExcelOpen As Boolean
Dim strFile_xl As String, strSheet_xl As String
Dim strMsgTitel As String
On Error GoTo Fehler
strFile_xl = "C:\MA\Watchlist_DUMMY.xlsx"
strSheet_xl = "Mitarbeiter Stand 01.01.2017"
strMsgTitel = "Excel-Daten holen" 'Titel-Zeile für Msgbox-Anzeigen
'Excel-Anwendung zuweisen - bei Fehler Excel starten
bolExcelOpen = True
'auf bereits geöffnete Ecxel-Anwendung zugreifen
Set objAppExcel = VBA.GetObject(, "Excel.Application")
'Datei-Öffnen und Blatt festlegen
Set wb = objAppExcel.Workbooks.Open(FileName:=strFile_xl, ReadOnly:=True)
Set wks = wb.Worksheets(strSheet_xl) 'ggf. Index-Nr. 1 statt Blattname verwenden
Set Folie = ActivePresentation.Slides(1)
'Suchbegriff einlesen
varSuch = Folie.Shapes("Text Placeholder 8").TextFrame.TextRange.Text
'Zeile mit Suchbegriff in Spalte E des Tabellenblatts suchen
varZeile = objAppExcel.Match(varSuch, wks.Range("E:E"), 0)
If IsError(varZeile) Then
MsgBox "Name """ & varSuch & """ nicht gefunden!", vbOKOnly, strMsgTitel
Else
'Werte aus Exceltabellenblatt einlesen und in den Texfeldern der Folie eintragen
varWert = wks.Cells(varZeile, 6).Text 'Wert aus Spalte F
Set Textfeld = Folie.Shapes("Text Placeholder 6")
Textfeld.TextFrame.TextRange.Text = varWert
varWert = wks.Cells(varZeile, 7).Text'Wert aus Spalte G
Folie.Shapes("Text Placeholder 7").TextFrame.TextRange.Text = varWert
'....usw.
End If
'Exceldatei schliessen und ggf. die Excelanwendung beenden
wb.Close savechanges:=False
If bolExcelOpen = False Then
objAppExcel.Quit
End If
Set wks = Nothing
Set wb = Nothing
Set objAppExcel = Nothing
'Fehlerbhandlung
Fehler:
With Err
Select Case .Number
Case 0 'alles OK
Case 9 'Element fehlt in Liste
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description & vbLf & vbLf _
& "Blatt """ & strSheet_xl & """ nicht in Excel-Datei vorhanden", _
vbOKOnly + vbCritical, strMsgTitel
Case 429 'Active-X-Objekt-Erstellung nicht möglich (Excel ist noch nicht gestartet)
Set objAppExcel = VBA.CreateObject("Excel.Application")
bolExcelOpen = False
objAppExcel.Visible = True 'ggf. auf False ändern wenn alles funktioniert
Resume Next
Case 1004 'Element fehlt in Liste
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description, _
vbOKOnly + vbCritical, strMsgTitel
Case Else
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description, _
vbOKOnly + vbCritical, strMsgTitel
End Select
End With
If Not objAppExcel Is Nothing Then
If Not wb Is Nothing Then
wb.Close savechanges:=False
End If
If objAppExcel.Visible = False Then
objAppExcel.Quit
End If
End If
End Sub

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

sVerweis in VBA nutzen, um PowerPoint aus Excel zu füllen


Schritt-für-Schritt-Anleitung

Um einen sVerweis in VBA zu verwenden und Daten aus einer Excel-Datei in PowerPoint zu ziehen, folge diesen Schritten:

  1. Öffne PowerPoint und aktiviere den VBA-Editor:

    • Drücke Alt + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.
  2. Verweis auf die Excel-Bibliothek setzen:

    • Gehe zu Extras > Verweise und setze einen Haken bei Microsoft Excel xx.x Object Library (xx.x ist die Version).
  3. Erstelle ein neues Modul:

    • Klicke mit der rechten Maustaste auf VBAProject (DeinePräsentation) > Einfügen > Modul.
  4. Füge den folgenden VBA-Code ein:

    Sub vba_sverweis()
       Dim objAppExcel As Object
       Dim wb As Object
       Dim wks As Object
       Dim Folie As Slide, Textfeld As Shape
       Dim varZeile, varWert As Variant, varSuch As Variant
       Dim bolExcelOpen As Boolean
       Dim strFile_xl As String, strSheet_xl As String
    
       strFile_xl = "C:\MA\Watchlist_DUMMY.xlsx"
       strSheet_xl = "Mitarbeiter Stand 01.01.2017"
    
       ' Excel-Anwendung zuweisen
       bolExcelOpen = True
       Set objAppExcel = VBA.GetObject(, "Excel.Application")
       Set wb = objAppExcel.Workbooks.Open(FileName:=strFile_xl, ReadOnly:=True)
       Set wks = wb.Worksheets(strSheet_xl)
       Set Folie = ActivePresentation.Slides(1)
    
       varSuch = Folie.Shapes("Text Placeholder 8").TextFrame.TextRange.Text
       varZeile = objAppExcel.Match(varSuch, wks.Range("E:E"), 0)
    
       If Not IsError(varZeile) Then
           varWert = wks.Cells(varZeile, 6).Text
           Set Textfeld = Folie.Shapes("Text Placeholder 6")
           Textfeld.TextFrame.TextRange.Text = varWert
       Else
           MsgBox "Name nicht gefunden!"
       End If
    
       wb.Close savechanges:=False
       objAppExcel.Quit
    End Sub
  5. Führe das Makro aus:

    • Schließe den VBA-Editor und kehre zu PowerPoint zurück. Drücke Alt + F8, wähle vba_sverweis und klicke auf Ausführen.

Häufige Fehler und Lösungen

  • Laufzeitfehler 1004:

    • Dieser Fehler tritt auf, wenn das angegebene Workbook oder Worksheet nicht gefunden wird. Überprüfe den Dateipfad und den Blattnamen.
  • Excel-Anwendung kann nicht gefunden werden:

    • Stelle sicher, dass Excel korrekt installiert ist und keine anderen Excel-Instanzen offen sind, die den Zugriff blockieren.
  • Element fehlt in Liste:

    • Dies geschieht oft, wenn der Platzhaltername nicht korrekt ist. Überprüfe die Namen der Shapes in PowerPoint.

Alternative Methoden

Anstelle des sVerweises kannst du auch die Match-Funktion verwenden, um Daten zu finden. Diese Methode behandelt Fehler eleganter und ist besonders nützlich, wenn der gesuchte Wert nicht vorhanden ist.

varZeile = objAppExcel.Match(varSuch, wks.Range("E:E"), 0)

Diese Methode ist einfach und sorgt dafür, dass du weniger mit Fehlern konfrontiert wirst.


Praktische Beispiele

Wenn du beispielsweise eine Excel-Datei mit Mitarbeiterdaten hast, kannst du Folgendes tun:

  1. Trage in die PowerPoint-Folie den Namen des Mitarbeiters in Text Placeholder 8 ein.
  2. Lass das Makro den entsprechenden Datensatz suchen und die Daten in Text Placeholder 6 und weitere Platzhalter einfüllen.

Tipps für Profis

  • VBA-Fehlerbehandlung: Füge einen Fehlerbehandlungsblock hinzu, um unerwartete Fehler besser zu verwalten.

  • Datenvalidierung: Stelle sicher, dass die Daten in Excel konsistent sind, um Suchfehler zu vermeiden.

  • Objekte freigeben: Denke daran, alle Objekte nach der Verwendung freizugeben, um den Speicher zu optimieren.


FAQ: Häufige Fragen

1. Wie mache ich einen sVerweis in Excel? Du kannst die Funktion =SVERWEIS(Suchkriterium; Matrix; Spaltenindex; [Bereich_Verweis]) verwenden, um Daten aus einer Tabelle zu ziehen.

2. Welche Excel-Version benötige ich für diese VBA-Anwendung? Das Beispiel wurde unter PowerPoint 2010 und Excel 2010 erstellt, sollte jedoch auch in neueren Versionen funktionieren.

3. Kann ich die Daten in PowerPoint automatisch aktualisieren? Ja, du kannst das Makro so anpassen, dass es beim Öffnen der Präsentation automatisch ausgeführt wird.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige