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

Excel über VBa ansteuern

Forumthread: Excel über VBa ansteuern

Excel über VBa ansteuern
06.03.2013 15:11:45
Ken
Hallo,
ich steuer ein Excelblatt über VBA Access. In einem Modul steuere ich den ersten Tab (Test) an - siehe code:
Dim xlApp As Excel.Application
Dim xlwrkbk As Excel.Workbook
Dim xlsheet As Excel.Worksheet
Dim exelsheet As Object
Dim strfilename As String
strfilename = "C:\test.xlsx"
Set xlwrkbk = xlApp.Workbooks.Open(strfilename)
Set xlsheet = xlApp.Application.ActiveWorkbook.Sheets("Test")
Sheets("Test").Select
xlApp.Visible = True
xlApp.DisplayAlerts = False
xlsheet.Delete
Sheets.Add.Name = "Test"
Range("7:7").Select
xlApp.ActiveWindow.FreezePanes = True
Funktioniert auch alles prima, wenn ich dann aber in einem zweiten Modul das andere Tab (Test2) von gleichen Excelblatt ansteuern will - siehe Code:
Dim xlApp As Excel.Application
Dim xlwrkbk As Excel.WorkbookDim
xlsheet As Excel.Worksheet
Sheets("Test2").Select
xlApp.Visible = True
xlApp.DisplayAlerts = False
xlsheet.Delete
Sheets.Add.Name = "Test2"
Range("7:7").SelectxlApp.ActiveWindow.FreezePanes = True
bekomme ich die Fehlermeldung:
Laufzeitfehler 91 in den Zeilen wo xlApp. oder xlsheet vorkommt.
Objektvariable oder With-Blockvariable nicht festgelegt
Kann mir jemand bitte helfen und sagen was ich dort falsch mache?
Vielen Dank!

Anzeige

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

Betreff
Datum
Anwender
Anzeige
VBA : Zuweisung Objektvariablen
06.03.2013 16:07:03
NoNet
Hallo Ken,
im 2.Code fehlt die Zuweisung der Mappe bzw. des Blattes an die Objektvariablen xlwrkbk und xlsheet - so funktioniert's :
Sub ZugriffAufExcel_NeuesBlattErstellen()
Dim xlApp As Excel.Application
Dim xlwrkbk As Excel.Workbook
Dim xlsheet As Excel.Worksheet
Set xlApp = GetObject(, "Excel.Application")
Set xlwrkbk = xlApp.ActiveWorkbook
Set xlsheet = xlwrkbk.Sheets("Test2")
xlApp.DisplayAlerts = False
xlApp.Visible = True
xlsheet.Delete
Set xlsheet = xlwrkbk.Sheets.Add
xlsheet.Name = "Test2"
xlsheet.Range("7:7").Select
xlApp.ActiveWindow.FreezePanes = True
xlApp.DisplayAlerts = False
End Sub
Noch ein Hinweis : Die Bezeichnung "Tab" und "Blatt" meinen im Allgemeinen beide das gleiche : ein Tabellenblatt in Excel. Was Du mit "Blatt" bezeichnest ist wohl eine Mappe/Datei/Workbook !
Gruß, NoNet

Anzeige
Nachtrag : Verweis auf Excel Object Library
06.03.2013 16:11:39
NoNet
Hallo Ken und @alle anderen Interessierte,
damit die Variablendeklaration per Dim Variable as Excel.Application funktioniert, muss zuvor natürlich (z.B. per Menüpunkt "Extras - Verweise" - oder per VBA-Code) ein Verweis auf die Microsoft Excel 14.0 Object Library gesetzt sein - ansonsten erkennen andere VBA-Umgebungen diese Klassen (also z.B. das Excel. )nicht !
Gruß, NoNet

Anzeige
AW: Nachtrag : Verweis auf Excel Object Library
06.03.2013 19:03:39
ken
Hallo NoNet,
vielen Dank für die schnelle Antwort und vor allem mit dieser perfekten Lösung. Es funktioniert! Ja ich meinte mit Blatt die Mappe und werde in Zukunft es auch so nennen :-)
Der Hinweiss über die Verweise war auch gut, hatte ich aber schon eingerichtet und ich meine wenn sie nicht eingerichtet ist kommt eine andere Fehlermeldung.
Also noch einmal vielen Dank, hatte vorher schon 3 Tage an diesem Problem "rumgemacht".
LG
Ken
Anzeige
;
Anzeige

Infobox / Tutorial

Excel über VBA ansteuern


Schritt-für-Schritt-Anleitung

Um ein Excel-Blatt über VBA zu steuern, kannst Du den folgenden Code verwenden. Dieser Code öffnet ein Excel-Dokument und ermöglicht es Dir, auf verschiedene Tabellen zuzugreifen.

Sub ZugriffAufExcel()
    Dim xlApp As Excel.Application
    Dim xlwrkbk As Excel.Workbook
    Dim xlsheet As Excel.Worksheet
    Dim strfilename As String

    strfilename = "C:\test.xlsx"
    Set xlApp = New Excel.Application
    Set xlwrkbk = xlApp.Workbooks.Open(strfilename)
    Set xlsheet = xlwrkbk.Sheets("Test")

    xlApp.Visible = True
    xlApp.DisplayAlerts = False
    xlsheet.Delete
    Set xlsheet = xlwrkbk.Sheets.Add
    xlsheet.Name = "Test"

    xlsheet.Range("7:7").Select
    xlApp.ActiveWindow.FreezePanes = True
End Sub

Um ein weiteres Blatt zu steuern, musst Du sicherstellen, dass die Objektvariablen korrekt zugewiesen sind. Hier ist ein Beispiel, wie Du ein weiteres Blatt (Test2) ansteuern kannst:

Sub ZugriffAufExcel_NeuesBlattErstellen()
    Dim xlApp As Excel.Application
    Dim xlwrkbk As Excel.Workbook
    Dim xlsheet As Excel.Worksheet

    Set xlApp = GetObject(, "Excel.Application")
    Set xlwrkbk = xlApp.ActiveWorkbook
    Set xlsheet = xlwrkbk.Sheets("Test2")

    xlApp.DisplayAlerts = False
    xlApp.Visible = True
    xlsheet.Delete
    Set xlsheet = xlwrkbk.Sheets.Add
    xlsheet.Name = "Test2"
    xlsheet.Range("7:7").Select
    xlApp.ActiveWindow.FreezePanes = True
End Sub

Häufige Fehler und Lösungen

Ein häufiger Fehler, den Nutzer erhalten, ist der Laufzeitfehler 91. Dieser tritt auf, wenn die Objektvariablen nicht korrekt zugewiesen sind. Achte darauf, dass Du die Zuweisung von xlwrkbk und xlsheet nicht vergisst. Hier ist eine schnelle Lösung:

  1. Stelle sicher, dass Du Set xlwrkbk = xlApp.ActiveWorkbook verwendest.
  2. Vergiss nicht, die Zeile Set xlsheet = xlwrkbk.Sheets("Test2") einzufügen, bevor Du auf das Blatt zugreifst.

Alternative Methoden

Du kannst auch ohne den Excel.Application-Objekt auf Excel zugreifen, indem Du die Workbooks-Sammlung direkt ansprechen. Hier ein Beispiel:

Sub AlternativerZugriff()
    Dim xlwrkbk As Workbook
    Dim xlsheet As Worksheet

    Set xlwrkbk = Workbooks.Open("C:\test.xlsx")
    Set xlsheet = xlwrkbk.Sheets("Test")

    xlsheet.Range("A1").Value = "Hallo Welt"
    xlwrkbk.Close SaveChanges:=True
End Sub

Praktische Beispiele

Ein praktisches Beispiel zur Verwendung des excel.vba.object-Modells wäre das Erstellen eines neuen Excel-Dokuments und das Hinzufügen von Daten:

Sub NeuesExcelDokument()
    Dim xlApp As Excel.Application
    Dim xlwrkbk As Excel.Workbook
    Dim xlsheet As Excel.Worksheet

    Set xlApp = New Excel.Application
    Set xlwrkbk = xlApp.Workbooks.Add
    Set xlsheet = xlwrkbk.Sheets(1)

    xlsheet.Cells(1, 1).Value = "Name"
    xlsheet.Cells(1, 2).Value = "Alter"

    xlApp.Visible = True
    xlwrkbk.SaveAs "C:\neues_dokument.xlsx"
    xlwrkbk.Close
    xlApp.Quit
End Sub

Tipps für Profis

  • Achte darauf, dass Du immer die Excel.Application-Instanz korrekt initialisierst, bevor Du auf Arbeitsmappen zugreifst.
  • Verwende Option Explicit am Anfang Deiner Module, um sicherzustellen, dass alle Variablen deklariert sind. Dies hilft, Fehler frühzeitig zu erkennen.
  • Setze Verweise auf die Microsoft Excel Object Library, um die Verwendung von Dim xlApp As Excel.Application zu ermöglichen.

FAQ: Häufige Fragen

1. Wie setze ich einen Verweis auf die Excel Object Library?
Gehe zu "Extras" > "Verweise" in der VBA-Entwicklungsumgebung und aktiviere die "Microsoft Excel x.x Object Library".

2. Was bedeutet Laufzeitfehler 91?
Dieser Fehler tritt auf, wenn eine Objektvariable nicht korrekt zugewiesen wurde. Überprüfe, ob Du Set für Deine Variablen verwendest.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige