Microsoft Excel

Herbers Excel/VBA-Archiv

Excel über VBa ansteuern

Betrifft: Excel über VBa ansteuern von: Ken
Geschrieben am: 06.03.2013 15:11:45

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!

  

Betrifft: VBA : Zuweisung Objektvariablen von: NoNet
Geschrieben am: 06.03.2013 16:07:03

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


  

Betrifft: Nachtrag : Verweis auf Excel Object Library von: NoNet
Geschrieben am: 06.03.2013 16:11:39

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


  

Betrifft: AW: Nachtrag : Verweis auf Excel Object Library von: ken
Geschrieben am: 06.03.2013 19:03:39

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