現在オフラインです。再接続するためにインターネットの接続を待っています

Visual Basic を使用して Microsoft Excel を自動化する方法

Office 2003 のサポートは終了しました

マイクロソフトでは、2014 年 4 月 8 日に Office 2003 のサポートを終了しました。この変更は、ソフトウェアの更新プログラムおよびセキュリティ オプションに影響しています。 この変更の意味および保護された状態を維持する方法について説明します。

概要
この資料では、Visual Basic でオートメーションを使用して Excel の作成および操作を行う方法について説明します。
詳細
オートメーション サーバーの制御には、実行時バインディングを使用する方法と事前バインディングを使用する方法の 2 つがあります。実行時バインディングでは、メソッドは実行時までバインドされず、オートメーション サーバーはオブジェクト型として宣言されます。事前バインディングでは、通信するオブジェクトの正確な型がデザイン時にアプリケーション側で検出され、そのオブジェクトを特定の型として宣言できます。このサンプルでは、事前バインディングを使用しています。事前バインディングはパフォーマンスと型の安全性が高く、ほとんどの場合、より適切な方法と考えられます。

オートメーション サーバーに事前にバインドするには、サーバーのタイプ ライブラリへの参照を設定する必要があります。Visual Basic では、[プロジェクト] メニューの [参照設定] をクリックして表示される [参照設定] ダイアログ ボックスでこの設定を行います。このサンプルでは、コードを実行する前に、Excel のタイプ ライブラリへの参照を追加する必要があります。参照を追加する方法については、以下の手順を参照してください。

オートメーション サンプル コードのビルド

  1. Visual Basic を起動して、新しい標準 EXE プロジェクトを作成します。デフォルトでは Form1 が作成されます。
  2. [プロジェクト] メニューの [参照設定] をクリックし、[参照設定] ダイアログ ボックスを表示します。一覧をスクロールして Microsoft Excel オブジェクト ライブラリを見つけ、チェック ボックスをオンにして Excel への参照を追加します。Excel のバージョンに適したオブジェクト ライブラリが一覧に表示されない場合は、使用しているバージョンの Excel が正しくインストールされているかどうかを確認します。

    • Microsoft Office Excel 2007 を自動化する場合、タイプ ライブラリは参照設定の一覧に [Microsoft Excel 12.0 Object Library] と表示されます。
    • Microsoft Office Excel 2003 を自動化する場合、タイプ ライブラリは参照設定の一覧に [Microsoft Excel 11.0 Object Library] と表示されます。
    • Microsoft Excel 2002 を自動化する場合、タイプ ライブラリは参照設定の一覧に [Microsoft Excel 10.0 Object Library] と表示されます。
    • Microsoft Excel 2000 を自動化する場合、タイプ ライブラリは参照設定の一覧に [Microsoft Excel 9.0 Object Library] と表示されます。
    • Microsoft Excel 97 を自動化する場合、タイプ ライブラリは参照設定の一覧に [Microsoft Excel 8.0 Object Library] と表示されます。
  3. [OK] をクリックして、[参照設定] ダイアログ ボックスを閉じます。
  4. コマンド ボタンを Form1 に追加します。
  5. Form1 のコード ウィンドウに、次のコードを挿入します。
       Option Explicit      Private Sub Command1_Click()      Dim oXL As Excel.Application      Dim oWB As Excel.Workbook      Dim oSheet As Excel.Worksheet      Dim oRng As Excel.Range            'On Error GoTo Err_Handler         ' Start Excel and get Application object.      Set oXL = CreateObject("Excel.Application")      oXL.Visible = True         ' Get a new workbook.      Set oWB = oXL.Workbooks.Add      Set oSheet = oWB.ActiveSheet         ' Add table headers going cell by cell.      oSheet.Cells(1, 1).Value = "First Name"      oSheet.Cells(1, 2).Value = "Last Name"      oSheet.Cells(1, 3).Value = "Full Name"      oSheet.Cells(1, 4).Value = "Salary"         ' Format A1:D1 as bold, vertical alignment = center.      With oSheet.Range("A1", "D1")         .Font.Bold = True         .VerticalAlignment = xlVAlignCenter      End With         ' Create an array to set multiple values at once.      Dim saNames(5, 2) As String      saNames(0, 0) = "John"      saNames(0, 1) = "Smith"      saNames(1, 0) = "Tom"      saNames(1, 1) = "Brown"      saNames(2, 0) = "Sue"      saNames(2, 1) = "Thomas"      saNames(3, 0) = "Jane"      saNames(3, 1) = "Jones"      saNames(4, 0) = "Adam"      saNames(4, 1) = "Johnson"          ' Fill A2:B6 with an array of values (First and Last Names).      oSheet.Range("A2", "B6").Value = saNames          ' Fill C2:C6 with a relative formula (=A2 & " " & B2).      Set oRng = oSheet.Range("C2", "C6")      oRng.Formula = "=A2 & "" "" & B2"          ' Fill D2:D6 with a formula(=RAND()*100000) and apply format.      Set oRng = oSheet.Range("D2", "D6")      oRng.Formula = "=RAND()*100000"      oRng.NumberFormat = "$0.00"          ' AutoFit columns A:D.      Set oRng = oSheet.Range("A1", "D1")      oRng.EntireColumn.AutoFit          ' Manipulate a variable number of columns for Quarterly Sales Data.      Call DisplayQuarterlySales(oSheet)          ' Make sure Excel is visible and give the user control    ' of Microsoft Excel's lifetime.      oXL.Visible = True      oXL.UserControl = True          ' Make sure you release object references.      Set oRng = Nothing      Set oSheet = Nothing      Set oWB = Nothing      Set oXL = Nothing         Exit Sub   Err_Handler:      MsgBox Err.Description, vbCritical, "Error: " & Err.Number   End Sub      Private Sub DisplayQuarterlySales(oWS As Excel.Worksheet)      Dim oResizeRange As Excel.Range      Dim oChart As Excel.Chart      Dim iNumQtrs As Integer      Dim sMsg As String      Dim iRet As Integer          ' Determine how many quarters to display data for.      For iNumQtrs = 4 To 2 Step -1         sMsg = "Enter sales data for" & Str(iNumQtrs) & " quarter(s)?"         iRet = MsgBox(sMsg, vbYesNo Or vbQuestion _            Or vbMsgBoxSetForeground, "Quarterly Sales")         If iRet = vbYes Then Exit For      Next iNumQtrs            sMsg = "Displaying data for" & Str(iNumQtrs) & " quarter(s)."      MsgBox sMsg, vbMsgBoxSetForeground, "Quarterly Sales"          ' Starting at E1, fill headers for the number of columns selected.      Set oResizeRange = oWS.Range("E1", "E1").Resize(ColumnSize:=iNumQtrs)      oResizeRange.Formula = "=""Q"" & COLUMN()-4 & CHAR(10) & ""Sales"""          ' Change the Orientation and WrapText properties for the headers.      oResizeRange.Orientation = 38      oResizeRange.WrapText = True          ' Fill the interior color of the headers.      oResizeRange.Interior.ColorIndex = 36          ' Fill the columns with a formula and apply a number format.      Set oResizeRange = oWS.Range("E2", "E6").Resize(ColumnSize:=iNumQtrs)      oResizeRange.Formula = "=RAND()*100"      oResizeRange.NumberFormat = "$0.00"          ' Apply borders to the Sales data and headers.      Set oResizeRange = oWS.Range("E1", "E6").Resize(ColumnSize:=iNumQtrs)      oResizeRange.Borders.Weight = xlThin          ' Add a Totals formula for the sales data and apply a border.      Set oResizeRange = oWS.Range("E8", "E8").Resize(ColumnSize:=iNumQtrs)      oResizeRange.Formula = "=SUM(E2:E6)"      With oResizeRange.Borders(xlEdgeBottom)         .LineStyle = xlDouble         .Weight = xlThick      End With          ' Add a Chart for the selected data      Set oResizeRange = oWS.Range("E2:E6").Resize(ColumnSize:=iNumQtrs)      Set oChart = oWS.Parent.Charts.Add      With oChart         .ChartWizard oResizeRange, xl3DColumn, , xlColumns         .SeriesCollection(1).XValues = oWS.Range("A2", "A6")            For iRet = 1 To iNumQtrs               .SeriesCollection(iRet).Name = "=""Q" & Str(iRet) & """"            Next iRet         .Location xlLocationAsObject, oWS.Name      End With          ' Move the chart so as not to cover your data.      With oWS.Shapes("Chart 1")         .Top = oWS.Rows(10).Top         .Left = oWS.Columns(2).Left      End With          ' Free any references.      Set oChart = Nothing      Set oResizeRange = Nothing      End Sub						
  6. F5 キーを押してプロジェクトを実行します。
関連情報
Office オートメーションの関連情報については、以下の Microsoft Office Development 製品サポート サイトを参照してください。(c) Microsoft Corporation 1999, All Rights Reserved. Contributions by Richard R. Taylor, Microsoft Corporation.

XL2007
プロパティ

文書番号:219151 - 最終更新日: 06/14/2007 02:35:48 - リビジョン: 5.0

  • Microsoft Office Excel 2007
  • Microsoft Office Excel 2003
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Excel 97 Standard Edition
  • Microsoft Visual Basic 5.0 Learning Edition
  • Microsoft Visual Basic 6.0 Learning Edition
  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic 5.0 Enterprise Edition
  • Microsoft Visual Basic 6.0 Enterprise Edition
  • Microsoft Office XP Developer Edition
  • Microsoft Office 2000 Developer
  • kbexpertisebeginner kbautomation kbhowto KB219151
フィードバック