方法 JScript を使用して HTML Web ページから Excel を自動化する

概要

この記事では、HTML ページから Microsoft Office Excel ブックを作成して操作する方法について説明します。

詳細

この記事では、Excel を自動化する JScript コードについて説明します。 JScript には、Safearrays ですを作成するための内部的な方法はありません。 オートメーションを使用する場合、SAFEARRAY を必要とする関数を呼び出す場合は、VBScript を使用して SAFEARRAY を作成できます。 次のコードは、JScript と VBScript コードの組み合わせを示しています。

オートメーションサンプルをビルドする

  1. メモ帳を起動します。

  2. 次のコードをメモ帳に貼り付けます。

    <HTML>
    <BODY>
    Press the button to start Excel and display quarterly data.
    <SCRIPT LANGUAGE="VBScript">
    Function CreateNamesArray()
    ' Create an array to set multiple values at once.
      Dim saNames(5, 2)
      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"
      CreateNamesArray = saNames
    End Function
    </SCRIPT>
    
    <SCRIPT LANGUAGE="JScript"> 
    function AutomateExcel()
    {
    
    // Start Excel and get Application object.
          var oXL = new ActiveXObject("Excel.Application");
    
    oXL.Visible = true;
    
    // Get a new workbook.
          var oWB = oXL.Workbooks.Add();
          var 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.
          oSheet.Range("A1", "D1").Font.Bold = true;
          oSheet.Range("A1", "D1").VerticalAlignment =  -4108; //xlVAlignCenter
    
    // Create an array to set multiple values at once.
    
    // Fill A2:B6 with an array of values (from VBScript).
          oSheet.Range("A2", "B6").Value = CreateNamesArray();
    
    // Fill C2:C6 with a relative formula (=A2 & " " & B2).
          var oRng = oSheet.Range("C2", "C6");
          oRng.Formula = "=A2 & \" \" & B2";
    
    // Fill D2:D6 with a formula(=RAND()*100000) and apply format.
          oRng = oSheet.Range("D2", "D6");
          oRng.Formula = "=RAND()*100000";
          oRng.NumberFormat = "$0.00";
    
    // AutoFit columns A:D.
          oRng = oSheet.Range("A1", "D1");
          oRng.EntireColumn.AutoFit();
    
    // Manipulate a variable number of columns for Quarterly Sales Data.
          DispalyQuarterlySales(oSheet);
    
    // Make sure Excel is visible and give the user control
       // of Excel's lifetime.
          oXL.Visible = true;
          oXL.UserControl = true;
    }
    
    function DispalyQuarterlySales(oWS)
    {
          var iNumQtrs, sMsg, iRet;
    
    // Number of quarters to display data for.
          iNumQtrs = 4;
    
    // Starting at E1, fill headers for the number of columns selected.
          var oResizeRange = oWS.Range("E1", "E1").Resize(1,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.
          oResizeRange = oWS.Range("E2", "E6").Resize(5,iNumQtrs);
          oResizeRange.Formula = "=RAND()*100";
          oResizeRange.NumberFormat = "$0.00";
    
    // Apply borders to the Sales data and headers.
          oResizeRange = oWS.Range("E1", "E6").Resize(6,iNumQtrs);
          oResizeRange.Borders.Weight = 2;  // xlThin
    
    // Add a Totals formula for the sales data and apply a border.
          oResizeRange = oWS.Range("E8", "E8").Resize(1,iNumQtrs);
          oResizeRange.Formula = "=SUM(E2:E6)";
        // 9 = xlEdgeBottom      
          oResizeRange.Borders(9).LineStyle = -4119; //xlDouble
          oResizeRange.Borders(9).Weight = 4; //xlThick
    
    // Add a Chart for the selected data.
    
    oResizeRange = oWS.Range("E2:E6").Resize(5,iNumQtrs);
          var oChart = oWS.Parent.Charts.Add();
          oChart.ChartWizard(oResizeRange, -4100, null, 2);  // -4100 = xl3dColumn
          oChart.SeriesCollection(1).XValues = oWS.Range("A2", "A6");
          for (iRet = 1; iRet <= iNumQtrs; iRet++) {
             oChart.SeriesCollection(iRet).Name = "=\"Q" + iRet + "\"";
          }
          oChart.Location(2, oWS.Name); // 2 = xlLocationAsObject
    
    // Move the chart so as not to cover your data.
          oWS.Shapes("Chart 1").Top = oWS.Rows(10).Top;
          oWS.Shapes("Chart 1").Left = oWS.Columns(2).Left;
    }
    </SCRIPT>
    <P><INPUT id=button1 type=button value="Start Excel" 
              onclick="AutomateExcel"></P>
    </BODY>
    </HTML>
    
  3. ファイル名 Excelaut を使用して、任意のディレクトリにファイルを保存します。

  4. メモ帳を閉じて、Internet Explorer を起動します。

  5. アドレスバーに「C:** path * * \excelaut.htm」と入力します。ここで、 pathは、ファイルを保存したディレクトリです。

  6. Internet Explorer でファイルが読み込まれると、ボタンに1つの文が表示されます。 ボタンを押すと、クライアントのコンピューターで Excel が起動し、データが入力されます。

References

この記事では、異なる言語を使用した同じプロセスを説明する他の記事と同等のものがあります。 詳細については、以下の記事番号をクリックして、Microsoft サポート技術情報の記事を参照してください。

219151 Visual Basic から Microsoft Excel を自動化する方法

179706 MFC を使用して Excel を自動化し、新しいブックを作成して書式設定する方法

HTML ページから Excel を自動化する方法の詳細については、次の記事番号をクリックして、Microsoft サポート技術情報の記事を参照してください。

198703クライアント側 VBScript から Excel を自動化する方法

Office オートメーションの詳細については、次の Microsoft Office 開発サポート Web サイトを参照してください。 Microsoft サポート