Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Excel über Access steuern

Begonnen von Ken, März 06, 2013, 14:03:37

⏪ vorheriges - nächstes ⏩

Ken

Hallo,

ich steuer ein Excelblatt über VBA Access. In einem Modul steuere ich den ersten Tab an - siehe code:

Set xlwrkbk = xlApp.Workbooks.Open(strfilename) 'wo befindet sich das Excel-File
Set xlsheet = xlApp.Application.ActiveWorkbook.Sheets("Test")
Sheets("Test").Select
xlApp.Visible = True 'Excelblatt anzeigen
xlApp.DisplayAlerts = False ' Sicherheitsabfragen unterdrücken
xlsheet.Delete 'Tab löschen
Sheets.Add.Name = "Test" 'Erstellt einen neuen Reiter
Range("7:7").Select
xlApp.ActiveWindow.FreezePanes = True


Funktioniert auch prima, wenn ich dann aber im zweiten Modul das andere Tab (Test2) ansteuer - siehe Code:

Dim xlApp As Excel.Application
Dim xlwrkbk As Excel.Workbook
Dim xlsheet As Excel.Worksheet
Sheets("Test2").Select
xlApp.Visible = True 'Excelblatt anzeigen
xlApp.DisplayAlerts = False ' Sicherheitsabfragen unterdrücken
xlsheet.Delete 'Tab löschen
Sheets.Add.Name = "Test2" 'Erstellt einen neuen Reiter
Range("7:7").Select
xlApp.ActiveWindow.FreezePanes = True


bekomme ich die Fehlermeldung:
Laufzeitfehler 91 in den Zeilen wo xlApp. vorkommt.
Objektvariable oder With-Blockvariable nicht festgelegt

Kann mir jemand bitte helfen und sagen was ich dort falsch mache?
Vielen Dank!
Gruß
Ken


Office 2010

database

Hallo,

hast du im VBE die Verweise auf Microsoft Excel gesetzt?

Ken

Hallo,

hab ich, sonst würde der erste Tag nicht funktionieren.

Gruß
Ken


Office 2010

database

Hi,

hast du schon versucht, so wie im ersten Modul das Sheet Test2 zu aktivieren bevor du Aktionen darauf absetzt?

Set xlsheet = xlApp.Application.ActiveWorkbook.Sheets("Test2")

Ken

Ja habe ich, kommt aber die gleiche Fehlermeldung :-(
Gruß
Ken


Office 2010

database

Hi,

du kannst dann noch Access mitteilen, welche Arbeitsmappe du meinst ...

Set xlwrkbk = xlApp.Application.ActiveWorkbook

und danach das Sheet bestimmen

Set xlsheet = xlwrkbk.Sheets("Test2")

Wobei mir noch auffällt, dass für das 2. Modul xlApp nicht instanziert ist.

du erzeugst im 2. Modul neue Objektvariabelen, die zwar gleich heißen wie die im ersten Modul aber keine Werte enthalten

allerdings bin ich dann mit meinem Latein für's Erste am Ende, da ich im Moment keine Möglichkeit habe das zu testen 

Ken

Hallo,

erstmal vielen Dank, dass du mir überhaupt versucht hast zu helfen!

Habe aus einen anderen Forum (spez. für Excel) eine Lösung gefunden und die lautet so:

im 2.Code fehlt die Zuweisung der Mappe bzw. des Blattes an die Objektvariablen xlwrkbk und xlsheet - so funktioniert's :


    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


Vielen Dank!
Gruß
Ken


Office 2010

database

Hallo,

so habe ich das in meiner Antwort ja bereits dargestellt ...

Setze bitte den Thread in DEINEM ersten Beitrag auf 'gelöst'   

DANKE

Ken

Hallo,

stimmt du hattest die Lösung...sorry hatte mich da etwas umständlich ausgedrückt  ;)
Diesen Beitrag hatte ich schon als gelöst gesetzt, habe ich noch einen offen?
Gruß
Ken


Office 2010