Here's some more Excel examples:
'########################################################################### ###### ' --------------------------------------------------------------- ' File: Excel.ebs ' ' Description: ' Uses OLE Automation to create an Excel workbook. ' A worksheet is filled with subsystem, module, and assigned classes. ' ' Created 11/09/95 by BILLJ ' ' Entry Points: Main ' ' Created by Rational Software Corporation ' (C) Copyright Rational Software Corporation 1996 All Rights Reserved '--------------------------------------------------------------------------- Sub CreateExcelSpreadsheet (theModel As Model) ' The following three objects are OLE Automation objects. Dim ExcelApp As Object Dim WorkBook As Object Dim WorkSheet As Object ModelName = GetAppName() '*** ' If an error occurs then go to the Trap1 label 'On Error GoTo Trap1 ' Create an instance of Excel Set ExcelApp = CreateObject ("Excel.Application") ' Make the Excel instance visible ExcelApp.Visible = TRUE ' Add a WorkBook to the Excel instance Set WorkBook = ExcelApp.Application.Workbooks.Add ' Create a Modules sheet and populate it with module names Set WorkSheet = WorkBook.WorkSheets.Add Dim AllSubsystems As SubsystemCollection Dim theClasses As ClassCollection Dim theSubsystem As Subsystem Dim theModule As Module Dim theClass As Class Set AllSubsystems = theModel.GetAllSubsystems () WorkSheet.Name = ModelName '*** RoseApp.Name WorkSheet.Cells (1, 1).Value = "SubSystem" WorkSheet.Cells (1, 2).Value = "Module" WorkSheet.Cells (1, 3).Value = "Class" WorkSheet.Cells (1, 4).Value = "Method" Row = 2 For SubID = 1 To AllSubsystems.Count Set theSubsystem = AllSubsystems.GetAt (SubID) WorkSheet.Cells (Row, 1).Value = theSubsystem.Name Row = Row + 1 For ModID = 1 To theSubsystem.Modules.Count Set theModule = theSubsystem.Modules.GetAt (ModID) WorkSheet.Cells (Row, 2).Value = theModule.Name Row = Row + 1 Set theClasses = theModule.GetAssignedClasses () For ClsID = 1 To theClasses.Count Set theClass = theClasses.GetAt (ClsID) WorkSheet.Cells (Row, 3).Value = theClass.Name Row = Row + 1 Next ClsID Next ModID Next SubID Exit Sub Trap1: MsgBox "Error!" Exit Sub End Sub Sub Main Call CreateExcelSpreadsheet (RoseApp.CurrentModel) End Sub Function GetAppName ' *** add this entire function to return app name Dim windowTitle As String Dim firstIndex As Integer Dim lastIndex As Integer Dim length As Integer Dim modelName As String windowTitle = AppGetActive$() firstIndex = InStr(windowTitle,"-") + 2 lastIndex = InStr(firstIndex, windowTitle,"-") - 2 length = lastIndex - firstIndex + 1 modelName = Mid(windowTitle, firstIndex, length) GetAppName = modelName End Function '########################################################################### ###### 'This sample script creates an Excel spreadsheet of all the C++ properties by class, 'name, type and default values. It autoformats the sheet afterwards 'Tested with Excel 97 and Rose 4.5.8163.3 'Patrick Rutledge, 2/99 Dim ExcelApp As Object Dim WorkBook As Object Dim WorkSheet As Object Dim currCol As Integer 'global column counter 'takes a collection of properties, the column name Sub AddPropsColToSheet (inProps As PropertyCollection, inName As String) If Worksheet Is Nothing Then CreateExcelWorkSheet End If midCol% = (3 * currCol%) -1 WorkSheet.Cells (1, midCol%).Value = inName row% = 2 Dim aProp As Property For i% = 1 To inProps.Count Set aProp = inProps.GetAt(i%) WorkSheet.Cells(row%, midCol% - 1) = aProp.Name WorkSheet.Cells(row%, midCol%) = aProp.Type WorkSheet.Cells(row%, midCol% + 1) = aProp.Value row% = row% + 1 Next i% currCol% = currCol% + 1 End Sub Sub CreateExcelWorkSheet ' If an error occurs then go to the Trap1 label On Error GoTo Trap1 ' Create an instance of Excel Set ExcelApp = CreateObject ("Excel.Application") ' Make the Excel instance visible ExcelApp.Visible = TRUE ' Add a WorkBook to the Excel instance Set WorkBook = ExcelApp.Application.Workbooks.Add ' Create a Modules sheet and populate it with module names Set WorkSheet = WorkBook.WorkSheets.Add WorkSheet.Name = "Rose C++ Properties" Exit Sub Trap1: MsgBox "error creating spreadsheet" End Sub Sub Main Dim defProps As DefaultModelProperties Dim theProps As PropertyCollection currCol = 1'initialize column counter to 1 Set defProps = RoseApp.CurrentModel.DefaultProperties Set theProps = defProps.GetDefaultPropertySet("Class", "cg", "default") AddPropsColToSheet theProps, "Class" Set theProps = defProps.GetDefaultPropertySet("Operation", "cg", "default") AddPropsColToSheet theProps, "Operation" Set theProps = defProps.GetDefaultPropertySet("Attribute", "cg", "default") AddPropsColToSheet theProps, "Attribute" Set theProps = defProps.GetDefaultPropertySet("Category", "cg", "default") AddPropsColToSheet theProps, "Category" Set theProps = defProps.GetDefaultPropertySet("Subsystem", "cg", "default") AddPropsColToSheet theProps, "Subsystem" Set theProps = defProps.GetDefaultPropertySet("Module-Spec", "cg", "default") AddPropsColToSheet theProps, "Module-Spec" Set theProps = defProps.GetDefaultPropertySet("Module-Body", "cg", "default") AddPropsColToSheet theProps, "Module-Body" Set theProps = defProps.GetDefaultPropertySet("Project", "cg", "default") AddPropsColToSheet theProps, "Project" Set theProps = defProps.GetDefaultPropertySet("Role", "cg", "default") AddPropsColToSheet theProps, "Role" Set theProps = defProps.GetDefaultPropertySet("Association", "cg", "default") AddPropsColToSheet theProps, "Association" Set theProps = defProps.GetDefaultPropertySet("Uses", "cg", "default") AddPropsColToSheet theProps, "Uses" Set theProps = defProps.GetDefaultPropertySet("Inherit", "cg", "default") AddPropsColToSheet theProps, "Inherit" If Worksheet Is Not Nothing Then WorkSheet.UsedRange.Autoformat End If 'release references Set ExcelApp = Nothing Set WorkBook = Nothing Set WorkSheet = Nothing End Sub '########################################################################### ###### I know a couple of ways to read data from an Excel sheet. Here a couple code snippets for reading data, but how you would like to do with the retrieved data (e.g. build some Rose model) would, of course, require your knowledge of RoseScripting: 1. Using ADODB and SQL queries, which allows multiple coonnections to a single XSL file: Example: Set cnnExcel = CreateObject("ADODB.Connection") cnnExcel.Open "DBQ=C:\Temp\myXSL.xls;DRIVER={Microsoft Excel Driver (*.xls)};" : Set rstExl = cnnExcel.Execute("SELECT * FROM MyNamedRange WHERE Name='Shaquille';") iCols = rstExl.Fields.Count For I = 0 To iCols - 1 ViewPort.Print rstExl.Fields.Item(I).Name Next 'I rstExl.MoveFirst ' Loop through the data rows showing data in viewport. Do While Not rstExcel.EOF For I = 0 To iCols - 1 ViewPort.Print rstExl.Fields.Item(I).Value Next 'I rstExl.MoveNext Loop 2. Using Excel's own Object-Model for a more complete set of calls for data-retrieval (e.g. PivotTables, etc.), but doesn't allow multiple connections to a single XSL file. Check out Microsoft's MSDN site for a complete object-model for Excel (97, 2002, XP). Example: Dim XL As Object 'Set XL = GetObject(, "Excel.Application") Set XL = GetObject("C:\Temp\myXSL.xls") XL.Application.Visible = False XL.Parent.Windows(1).Visible = True Dim SheetsCol As Object Dim PivTablesCol As Object Dim someValue As String With XL .Application.DisplayAlerts = False 'recommended for automation calls Set SheetsCol = .Sheets Set PivTablesCol = SheetsCol(1).PivotTables someValue = PivTablesCol(1).PivotFields("Name").PivotItems(1).Name : End With : '########################################################################### ###### -----Original Message----- From: Kennedy, Patrick [mailto:[EMAIL PROTECTED]] Sent: Tuesday, February 18, 2003 2:26 PM To: 'Ronald W Townsen'; [EMAIL PROTECTED] Subject: RE: (ROSE) Rose Scripting and MS Access97 Look in the Rose script sample directory. There is a script to read info from Rose into Access (not sure what version). I also believe I might have some examples stashed on my home machine, which if I find I do, I will foward. Patrick Kennedy Rational Support -----Original Message----- From: Ronald W Townsen [mailto:[EMAIL PROTECTED]] Sent: Tuesday, February 18, 2003 7:59 AM To: [EMAIL PROTECTED] Subject: (ROSE) Rose Scripting and MS Access97 Does anyone have some example Rose Scripting Code showing how to work with Acess97? Create/Update/Query? ************************************************************************ * Rose Forum is a public venue for ideas and discussions. * For technical support, visit http://www.rational.com/support * Only plain-text messages are supported. * HTML or Rich-Text messages may be rejected. * * Post or Reply to: [EMAIL PROTECTED] * Subscription Requests: [EMAIL PROTECTED] * Archive of messages: * http://www.rational.com/support/usergroups/rose/rose_forum.jsp * Other Requests: [EMAIL PROTECTED] * * To unsubscribe from the list, please send email * To: [EMAIL PROTECTED] * Subject: <BLANK> * Body: unsubscribe rose_forum ************************************************************************* ************************************************************************ * Rose Forum is a public venue for ideas and discussions. * For technical support, visit http://www.rational.com/support * Only plain-text messages are supported. * HTML or Rich-Text messages may be rejected. * * Post or Reply to: [EMAIL PROTECTED] * Subscription Requests: [EMAIL PROTECTED] * Archive of messages: * http://www.rational.com/support/usergroups/rose/rose_forum.jsp * Other Requests: [EMAIL PROTECTED] * * To unsubscribe from the list, please send email * To: [EMAIL PROTECTED] * Subject: <BLANK> * Body: unsubscribe rose_forum ************************************************************************* ************************************************************************ * Rose Forum is a public venue for ideas and discussions. * For technical support, visit http://www.rational.com/support * Only plain-text messages are supported. * HTML or Rich-Text messages may be rejected. * * Post or Reply to: [EMAIL PROTECTED] * Subscription Requests: [EMAIL PROTECTED] * Archive of messages: * http://www.rational.com/support/usergroups/rose/rose_forum.jsp * Other Requests: [EMAIL PROTECTED] * * To unsubscribe from the list, please send email * To: [EMAIL PROTECTED] * Subject: <BLANK> * Body: unsubscribe rose_forum *************************************************************************