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/
> 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
>Aber im Prinzip geht das so etwa:
>
>[..umfangreiches Codebeispiel..] Dim xlObj As Object
>
Sieht gut aus, werde es so probieren. 1k Dank!
"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]" <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, _