Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Glombi 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
-
CreateObject( "Excel.Application") funktioniert auch unter Windows 2000.
Damit wäre das Problem gelöst.
-
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
-
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
-
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.
-
Jo, für den zweiten User gilt X + Y, wobei Y >= 0 ;D
-
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ß.