How To Use the Spreadsheet Web Component with Visual Basic

Article translations Article translations
Article ID: 235883
Expand all | Collapse all

On This Page

Summary

If you want to use a spreadsheet or calculation engine in your custom Visual Basic solution, you can use the Spreadsheet control included with the Microsoft Office Web Components. This article discusses how to insert a spreadsheet as a control on a Visual Basic form and populate the spreadsheet with data.

More information

You can add the Office Web Components to a form in Visual Basic in the same way that you add any other ActiveX control. The Spreadsheet control included with the Office Web Components is a more robust option than the DataGrid control that ships with Visual Basic. Use the spreadsheet data to display formatted data, calculate formulas and allow user interactivity.

IMPORTANT: To view and work with any of the Office Web Components, you must have them installed on your computer. The components are installed with Microsoft Office 2000, or, if your company has an Office 2000 site license, the components can be downloaded from your Intranet. Your users must have these components installed as well, and must be covered by an Office 2000 license. You and your users must use Microsoft Internet Explorer version 4.01 or later.

Steps to Create a Sample Project

  1. Create a new Standard EXE project in Visual Basic. Form1 is created by default.
  2. Add a reference to Microsoft Office Web Components 9.0.
  3. Add the Spreadsheet control from the Visual Basic toolbox to your form.
  4. The Spreadsheet control can be displayed and used like a worksheet, or it can be hidden and used as a calculation engine for visible controls on the page.
Working with the Spreadsheet control in Visual Basic is almost identical to working with a worksheet in Excel. The methods and properties you use to manipulate the Spreadsheet component are similar to those you would use when automating Excel.

Populating a Spreadsheet Control

You can add data to a Spreadsheet control in one of the following ways:
  • Enter data directly into the grid.
  • Copy and paste data from an Excel sheet, text file, or Word document.
  • Import data from a text file or a Web page. For more information see the LoadText Method topic and the HTMLURL Property topic in online Help.
  • Write code to populate the spreadsheet with data.
Note that there is no way to bind the Spreadsheet control to data directly.

The following procedure populates and formats a Spreadsheet control with data from the sample database Northwind (NWind.mdb):
Sub GetNwindData()

    Dim rstEmployees As Object
    Dim cnn As String
    Dim strSQL As String
    Dim fldCount As Integer
    Dim intIRow As Integer
    Dim intICol As Integer
    Dim varData As Variant

    'Create recordset and fill with records from Northwind sample database.
    Set rstEmployees = CreateObject("ADODB.Recordset")
    cnn = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=C:\Program Files\Microsoft Visual Studio\VB98\nwind.mdb"
    strSQL = "SELECT FirstName, LastName, Title, Extension FROM Employees ORDER BY LastName"
    rstEmployees.Open strSQL, cnn, 3 ' adOpenStatic = 3
    
    'Clear any existing values from the spreadsheet control.
    Spreadsheet1.ActiveSheet.Cells(1, 1).Select
    Spreadsheet1.ActiveSheet.UsedRange.Clear

    'Add the field names as column headers.
    For fldCount = 0 To rstEmployees.Fields.Count - 1
        intIRow = intIRow + 1
        Spreadsheet1.ActiveSheet.Cells(1, intIRow).Value = rstEmployees.Fields(fldCount).Name
    Next

    'Fill the control with data from the database.
    Dim iNumCols As Integer
    Dim iNumRows As Integer
    
    iNumCols = rstEmployees.Fields.Count
    iNumRows = rstEmployees.Recordcount
    varData = rstEmployees.GetRows(iNumRows)
    
    For intIRow = 1 To iNumRows
        For intICol = 1 To iNumCols
            Spreadsheet1.ActiveSheet.Cells(intIRow + 1, intICol).Value = varData(intICol - 1, intIRow - 1)
        Next
    Next

    'Format the headers in row 1 with a Bold Font that is 11 points.
    With Spreadsheet1.ActiveSheet.Range(Spreadsheet1.Cells(1, 1),
Spreadsheet1.ActiveSheet.Cells(1, iNumCols)).Font
        .Bold = True
        .Size = 11
    End With
    
    'AutoFit the columns and make all text left-aligned.
    With Spreadsheet1.ActiveSheet.Range(Spreadsheet1.Cells(1, 1),
Spreadsheet1.ActiveSheet.Cells(iNumRows + 1, iNumCols))
        .AutoFitColumns
        .HAlignment = ssHAlignLeft
    End With

End Sub
				


Note that a Spreadsheet control is not a Workbook and contains only a single sheet. The ActiveSheet property always refers to that single sheet.

Getting Help

After you create a reference to the Office Web Components library, you can access Help through the object browser or from the General tab of the Spreadsheet Property Toolbox. You can also locate and double-click the Help file Msowcvba.chm. To get help on a specific keyword, highlight the keyword and press the F1 key. For information about creating references and using object model Help, see Help in Visual Basic or Visual Basic for Applications.

You can bind a Chart control to a Spreadsheet control. For additional information on the Chart control, please click the article number below to view the article in the Microsoft Knowledge Base:
235885 How To Use the Chart Web Component With VB

References

For more information about Office Web Components, see Chapter 12, "Using Web Technologies," in the Microsoft Office 2000/Visual Basic Programmer's Guide.

Properties

Article ID: 235883 - Last Review: June 19, 2014 - Revision: 2.0
Keywords: 
kbhowto kbofficewebspread KB235883
Retired KB Content Disclaimer
This article was written about products for which Microsoft no longer offers support. Therefore, this article is offered "as is" and will no longer be updated.

Give Feedback

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com