Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Excel-Sheet per VBA oeffnen

1,511 views
Skip to first unread message

Wolfgang Schmidhuber

unread,
Nov 2, 2002, 11:19:45 AM11/2/02
to
Hallo,

wie kann ich aus Access per VBA eine Excel-Datei aufrufen?

Besonderer Luxus wäre, auch noch eine bestimmte Seite der betreffenden
Excel-Mappe zu öffnen.

TIA

(x-post)


Freundliche Grüße - Wolfgang Schmidhuber

--
Die Angabe des wirklichen Namens legt es nahe, sich seine Äußerungen im
Usenet gut zu überlegen, weil man damit rechnen muß, auf lange Sicht mit
ihnen identifiziert und an ihnen gemessen zu werden. Das ist wertvoll
für die Qualität der Kommunikation. - www.wschmidhuber.de/realname/

Klaus Oberdalhoff [MVP]

unread,
Nov 2, 2002, 12:24:09 PM11/2/02
to
Hi,

> wie kann ich aus Access per VBA eine Excel-Datei aufrufen?
>
> Besonderer Luxus wäre, auch noch eine bestimmte Seite der betreffenden
> Excel-Mappe zu öffnen.

das geht mit Office Automation recht gut. Ein brauchbarer Ansatz findet sich in
der KnowHow.mdb (www.freeaccess.de)

Aber im Prinzip geht das so etwa:

Dim xlObj As Object
Dim objActiveWkb As Object

On Error Resume Next 'See if Excel is running
Set xlObj = GetObject(, "Excel.Application")
If Err.Number <> 0 Then 'Excel Not running
Err.Clear ' Clear Err object in case error occurred.
'Create a new instance of Excel
Set xlObj = CreateObject("Excel.Application")
'Wenn Excel noch nicht gestartet war True, sonst False
boolXL = True
Else
'Activate instance of Excel
xlObj.Activate
boolXL = False
End If

With xlObj
.WindowState = xlMaximized
.Visible = False

''''' .Workbooks.Add 'wäre neue Tabelle erstellen
.Workbooks.Open Dateiname, 0, True 'Öffnen einer bestimmten Datei
' .Workbooks.RejectAllChanges ' Keine Änderungen zulassen

Set objActiveWkb = xlObj.Application.ActiveWorkbook
End With

' Tab auswählen
Str_Tabname = "Mein Tab"
With objActiveWkb.Worksheets(Str_Tabname)
.Select
.....

End With

xlObj.Workbooks.Close False
xlObj.Application.Quit

Alles klar ?
Verweis auf Excel nicht vergessen

--
mfg

Klaus Oberdalhoff(Access MVP) KO...@gmx.de
Info unter: http://www.freeaccess.de/KlausOberdalhoff.asp

Ich beantworte keine NG-Fragen und -Nachfragen per Mail!
Newbie-Info: http://www.doerbandt.de/Access/Newbie.htm
KnowHow-mdb: http://www.freeaccess.de

Wolfgang Schmidhuber

unread,
Nov 2, 2002, 12:55:15 PM11/2/02
to
Klaus Oberdalhoff [MVP] schrieb

>Aber im Prinzip geht das so etwa:
>

>[..umfangreiches Codebeispiel..] Dim xlObj As Object
>

Sieht gut aus, werde es so probieren. 1k Dank!

Henry Habermacher [MVP Access]

unread,
Nov 3, 2002, 11:48:24 AM11/3/02
to
Hallo Wolfgang

"Wolfgang Schmidhuber" <wschmi...@gmx.net> wrote in message
news:aq0tv1$bk0$06$1...@news.t-online.com...


> Besonderer Luxus wäre, auch noch eine bestimmte Seite der betreffenden
> Excel-Mappe zu öffnen.

Folgende paar Codezeilen sollten in etwa das machen, was du brauchst:


Public Function openExcelFile(strWorkbook As String, Optional varSheet
As Variant)
Dim appXLS As New Excel.Application
appXLS.Workbooks.Open strWorkbook
If Not IsMissing(varSheet) Then
appXLS.ActiveWorkbook.Sheets(varSheet).Activate
End If
appXLS.Visible = True
Set appXLS = Nothing
End Function

Kopiere diesen Code in ein Standard Modul. Setze einen Verweis auf die
Excel Object Library. Rufe die Funktion zB. im Direktfenster mit:

? openexcelfile("C:\testbook.xls", "testsheet")

auf. Statt des Namens der Seite im Workbook kannst Du auch einfach den
Seitenindex verwenden, also zB:

? openexcelfile("C:\testbook.xls", 2)

HTH
Henry


--
Keine E-Mails auf Postings in NGs senden!
Don't send e-mails to postings in newsgroups!
KB: http://support.microsoft.com/default.aspx
FAQ: http://www.donkarl.com/FAQ/FAQStart.htm
MVP: http://mvp.support.microsoft.com

Henry Habermacher [MVP Access]

unread,
Nov 3, 2002, 10:40:29 PM11/3/02
to
Hallo Wolfgang

"Henry Habermacher [MVP Access]" <he...@psp-online.com> wrote in message
news:aq3k3i$6532r$1...@ID-30649.news.dfncis.de...


> Public Function openExcelFile(strWorkbook As String, Optional varSheet
> As Variant)
> Dim appXLS As New Excel.Application
> appXLS.Workbooks.Open strWorkbook
> If Not IsMissing(varSheet) Then
> appXLS.ActiveWorkbook.Sheets(varSheet).Activate
> End If
> appXLS.Visible = True
> Set appXLS = Nothing
> End Function

Da hat's mir wieder mal 'ne Codezeile gesplittet.
Falls Du das nicht gesehen hast, hier nochmals, diesmal hoffentlich
ungesplittet:

Public Function openExcelFile(strWorkbook As String, _

0 new messages