Autor Thema: Frage zu CreateObject( "Excel.Application")  (Gelesen 7820 mal)

Glombi

  • Gast
Frage zu CreateObject( "Excel.Application")
« am: 08.04.04 - 15:47:29 »
Ich habe mir aus dem Sandkasten ein kleines Programm gesaugt und modifiziert, mit dem ich Daten aus einer Excel Datei lesen kann.

Zu der Stelle CreateObject( "Excel.Application") habe ich eine Frage:
Im Original stand
Set Excel = CreateObject( "Excel.Application.9" ) ' for windows2000
Set Excel = CreateObject( "Excel.Application.8" ) ' for windows95

Ich habe Win XP, da geht es nur mit CreateObject( "Excel.Application").
Läuft das auch unter Win 2000? Oder muss ich da .9 verwenden?

Wenn das BS-abhängig ist: Kann ich per Script auslesen, ob Win 2000 oder XP verwendet wird. Wahrscheinlich gibt es irgendeine DLL, die ich aufrufen muss. Aber welche???
session.Platform liefert ja nur Windows 32.


Hier der komplette Agent:

Sub Initialize
   
   On Error Goto ErrorHandling
   
   Dim Excel As Variant
   Dim xlWorkbook As Variant
   Dim xlSheet As Variant
   
   Dim xlFilename As String   
   Dim col_val As String   
   Dim row As Integer
   Dim written As Integer
   
   xlFilename = "e:\kst1.xls"
   
   col_val = "dummy"
   
   ' Row number to import
   records = 10
   
   'Erstelle Excel-Objekt
   Set Excel = CreateObject( "Excel.Application")
%REM   
      Set Excel = CreateObject( "Excel.Application.9" ) ' for windows2000
      Set Excel = CreateObject( "Excel.Application.8" ) ' for windows95
%ENDREM   
   
   'Excel.Visible = False ' Don't display the Excel window
   Excel.Workbooks.Open xlFilename ' Open the Excel file
   Set xlWorkbook = Excel.ActiveWorkbook
   Set xlSheet = xlWorkbook.ActiveSheet
   
     ' Cycle through the rows of the Excel file, pulling the data over to Notes   
   row = 0
   written = 0
   
   Do While col_val <> ""
      With xlSheet
         row = row + 1               
         If row  > 1 Then
            col_val = .Cells( row, 4 ).Value
            Print col_val
         End If
         written = written + 1         
      End With
   Loop
   
   'Excel schliessen
   xlWorkbook.Close
   Excel.Quit
   
   Set Excel = Nothing ' Free the memory that we'd used
   
   Exit Sub
   
   '########### ERROR HANDLING ############   
ErrorHandling:
   Messagebox "Check Excel file location or SW Version or View Name or Form Name" ,MB_OK+MB_ICONINFORMATION,"Warning ! "
   Print " " ' Clear the status line   
   Exit Sub   
   
End Sub


Danke für jede Antwort!

Andreas
« Letzte Änderung: 08.04.04 - 16:11:11 von Glombi »

Glombi

  • Gast
Re:Frage zu CreateObject( "Excel.Application")
« Antwort #1 am: 08.04.04 - 16:50:49 »
CreateObject( "Excel.Application") funktioniert auch unter Windows 2000.
Damit wäre das Problem gelöst.

Offline MartinG

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.802
  • Geschlecht: Männlich
Re:Frage zu CreateObject( "Excel.Application")
« Antwort #2 am: 08.04.04 - 16:59:38 »
Ich glaube die Erklärung ist falsch - das ganze bezieht sich vermutlich eher auf die Excel Version

Excel 11 = Excel 2003
10 = Excel XP
9 = Excel 2000
8 = Excel 97
7 = Excel 95
....

Gruss
Martin
Martin
Wir leben zwar alle unter dem gleichen Himmel, aber wir haben nicht den gleichen Horizont.
KONRAD ADENAUER

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re:Frage zu CreateObject( "Excel.Application")
« Antwort #3 am: 08.04.04 - 17:04:34 »
Richtig, nur ist die Angabe im Sandkasten bogus. Die Zahl nach Application bezieht sich nicht auf die Windows-Version, sondern auf die Excel-Version, so wie das Martin eben auch aufgeführt hat.

Verwendet man "Excel.Application", so wird die zuletzt installierte Excel-Version verwendet, welche auch immer das ist.

Lässt sich bei MS-Support an verschiedenen Stellen nachlesen
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Glombi

  • Gast
Re:Frage zu CreateObject( "Excel.Application")
« Antwort #4 am: 08.04.04 - 17:11:19 »
Falls also die Excel-Datei mit der Version X erstellt wird und ein anderer User, der den Scriptagent ausführt, auch die Version X hat, sollte also CreateObject( "Excel.Application") funktionieren.

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re:Frage zu CreateObject( "Excel.Application")
« Antwort #5 am: 08.04.04 - 17:13:04 »
Jo, für den zweiten User gilt X + Y, wobei Y >= 0   ;D
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Glombi

  • Gast
Re:Frage zu CreateObject( "Excel.Application")
« Antwort #6 am: 08.04.04 - 17:31:23 »
Jens sei Dank für diese Info:

http://support.microsoft.com/default.aspx?scid=kb;de;d40000

da steht:

Wenn Sie beispielsweise die folgende Visual Basic für
Anwendungen-Subroutine in Microsoft Word 97 ausführen,
   Sub AutomationTest()
       Dim xlApp As Object
       Set xlApp = CreateObject("Excel.Application")
       MsgBox xlApp.Version
       xlApp.Quit
       Set xlApp = Nothing
   End Sub
erstellt die Subroutine immer eine Automatisierungssitzung in der letzten
installierten Version von Microsoft Excel. Wenn Sie also Microsoft Excel 97
und Microsoft Excel 2000 auf demselben Computer installieren, zeigt das
Meldungsfeld in dem Beispiel "9.0", die Versionsnummer von Microsoft Excel
2000, an.

Wenn Sie eine bestimmte Version von Microsoft Excel mittels Automatisierung
steuern wollen, verwenden Sie die in der folgenden Tabelle aufgeführten
Klassennamen.
   Microsoft Excel-Version     Klassenname
   2000                        Excel.Application.9
   97                          Excel.Application.8
   7.0                         Excel.Application.5
   5.0                         Excel.Application.5
HINWEIS: Da Microsoft Excel 5.0 und 7.0 den gleichen Klassennamen
verwenden, bezieht sich, wenn beide Versionen auf demselben Computer
installiert sind, Excel.Application.5 immer auf Microsoft Excel 7.0. Dieses
Verhalten kann nicht verhindert werden. Microsoft Excel 5.0 und 7.0
verwenden jedoch das gleiche Dateiformat und verfügen über weitgehend
gleiche Funktionen, so daß Sie Microsoft Excel 7.0 anstelle von Microsoft
Excel 5.0 verwenden können, ohne daß mit Beeinträchtigungen gerechnet
werden muß.
« Letzte Änderung: 08.04.04 - 17:31:37 von Glombi »

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz