ONLY DO WHAT ONLY YOU CAN DO

こけたら立ちなはれ 立ったら歩きなはれ

さまざまな言語で Excel オートメーション (まとめ)

VBScript

Dim excelApp: Set excelApp = CreateObject("Excel.Application")
excelApp.Visible           = True
excelApp.DisplayAlerts     = False '警告メッセージをOFF
 
'ブックを読み取り専用で開く
Dim book: Set book = excelApp.Workbooks.Open(WScript.Arguments(0), False, True)
 
For Each sheet In book.Sheets
    WScript.Echo sheet.Name
Next
 
book.Close
Set book = Nothing
 
excelApp.Quit
Set excelApp = Nothing

JScript

var excelApp           = WScript.CreateObject("Excel.Application");
excelApp.Visible       = true;
excelApp.DisplayAlerts = false; //警告メッセージをOFF
 
//ブックを読み取り専用で開く
var book = excelApp.Workbooks.Open(WScript.Arguments(0), false, true);
 
for (var i=1;i<=book.Sheets.Count;i++)
{
    WScript.Echo(book.Sheets(i).Name);
}
 
var sheets = new Enumerator(book.Sheets);
for (;!sheets.atEnd();sheets.moveNext())
{
    WScript.Echo(sheets.item().Name);
}
sheets = null;
 
book.Close();
book = null;
 
excelApp.Quit(); 
excelApp = null;

Perl

use Win32::OLE;
 
Win32::OLE::CreateObject("Excel.Application", $excelApp); # || die; # "fail! : $!";
$excelApp->{Visible}       = 1;
$excelApp->{DisplayAlerts} = 0; #警告メッセージをOFF
 
#ブックを読み取り専用で開く
$book = $excelApp->WorkBooks->Open($ARGV[0], 0, 1);
 
foreach $i (1..$book->WorkSheets->Count)
{
    print $book->WorkSheets($i)->Name, "\n";
}
 
$book->Close();
$excelApp->Quit();

PHP

<?php
    // EXCELのインスタンス作成
    $excelApp = new COM("Excel.Application"); # or die;
    $excelApp->Visible       = 1;
    $excelApp->DisplayAlerts = 0; #警告メッセージをOFF
 
	#ブックを読み取り専用で開く
    $book = $excelApp->Workbooks->Open($argv[1], false, true);
 
    foreach ($book->Worksheets as $sheet)
    {
       echo $sheet->Name, "\n";
    } 
 
    $book->Close();
    $excelApp->Quit();
    unset($excelApp);
?>

Python

# coding: cp932
import win32api, win32con, win32com, win32com.client, os, time, sys
 
excelApp               = win32com.client.Dispatch("Excel.Application") 
excelApp.Visible       = True
excelApp.DisplayAlerts = False #警告メッセージをOFF
 
#ブックを読み取り専用で開く
book = excelApp.workbooks.open(sys.argv[1], False, True)
for sheet in book.Worksheets:
    print sheet.name
 
book.Close()
excelApp.Quit() 

Ruby

require 'win32ole'
 
excelApp               = WIN32OLE.new('Excel.Application')
excelApp.Visible       = 1
excelApp.DisplayAlerts = 0 #警告メッセージをOFF
 
#ブックを読み取り専用で開く
book = excelApp.WorkBooks.Open(ARGV[0], false, true)
book.WorkSheets.each do |sheet|
    puts(sheet.Name)
end
book.Close
excelApp.Quit

Java

import com.jacob.com.*;
import com.jacob.activeX.*;
 
public class Lesson001
{
    public static void main(String[] args) {
        ActiveXComponent excelApp = new ActiveXComponent("Excel.Application");
        try {
            excelApp.setProperty("Visible",       new Variant(true));
            excelApp.setProperty("DisplayAlerts", new Variant(false)); //警告メッセージをOFF
            Dispatch workbooks  = Dispatch.get(excelApp, "Workbooks").toDispatch();
            Dispatch workbook   = Dispatch.call(workbooks, "Open", args[0], new Variant(false), new Variant(true)).toDispatch(); //ブックを読み取り専用で開く
            Dispatch worksheets = Dispatch.get(workbook, "Worksheets").toDispatch();
            for (int i=1;i<=Dispatch.get(worksheets, "Count").getInt();i++)
            {
                Dispatch sheet = Dispatch.call(worksheets, "Item", i).toDispatch();
                Variant v = Dispatch.call(sheet, "Name");
                if (!v.isNull())
                    System.out.println(v.toString());
            }
            Dispatch.call(workbook, "Close");
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            excelApp.invoke("Quit", new Variant[] {});
            ComThread.Release();
        }
    }
}

C#

using System.Runtime.InteropServices;
using System.Reflection;
class Program
{
    static void Main(string[] args)
    {
        //Excelファイルパス
        try
        {
            // Excel操作用COMオブジェクトを生成する
            System.Type t        = System.Type.GetTypeFromProgID("Excel.Application");
            object      excelApp = System.Activator.CreateInstance(t);
 
            // Excelファイルの表示
            excelApp.GetType().InvokeMember("Visible", BindingFlags.SetProperty, null, excelApp, new object[] { true });
 
            //警告メッセージをOFF
            excelApp.GetType().InvokeMember("DisplayAlerts", BindingFlags.SetProperty, null, excelApp, new object[] { false });
 
            //ワークブックコレクションオブジェクトを生成する。
            object excelBooks = excelApp.GetType().InvokeMember("Workbooks", BindingFlags.GetProperty, null, excelApp, null);
 
            //Excelファイルのオープン
            object excelBook = excelBooks.GetType().InvokeMember
            (
                "Open"
            ,   BindingFlags.InvokeMethod
            ,   null
            ,   excelBooks
            ,   new object[]
                {
                    args[0]
                ,   false
                ,   true
                ,   System.Type.Missing
                ,   System.Type.Missing
                ,   System.Type.Missing
                ,   System.Type.Missing
                ,   System.Type.Missing
                ,   System.Type.Missing
                ,   System.Type.Missing
                ,   System.Type.Missing
                ,   System.Type.Missing
                ,   System.Type.Missing
                }
            );
 
            object excelSheets = excelBook.GetType().InvokeMember("Worksheets", BindingFlags.GetProperty, null, excelBook, null);
            object cnt         = excelSheets.GetType().InvokeMember("Count", BindingFlags.GetProperty, null, excelSheets, null);
            for (int i=1;i<=System.Convert.ToInt32(cnt);i++)
            {
                object sheet = excelSheets.GetType().InvokeMember("Item", BindingFlags.GetProperty, null, excelSheets, new object[1]{i});
                object sheetName = sheet.GetType().InvokeMember("Name", BindingFlags.GetProperty, null, sheet, null);
                System.Console.WriteLine(sheetName);
            }
 
            //閉じる
            excelApp.GetType().InvokeMember("Quit", System.Reflection.BindingFlags.InvokeMethod, null, excelApp, null);
 
            //COM解放
            System.Runtime.InteropServices.Marshal.FinalReleaseComObject(excelBook);
            excelBook = null;
 
            System.Runtime.InteropServices.Marshal.FinalReleaseComObject(excelBooks);
            excelBooks = null;
 
            System.Runtime.InteropServices.Marshal.FinalReleaseComObject(excelApp);
            excelApp = null;
        }
        catch(System.Exception ex) 
        {
            System.Console.WriteLine(ex.Message, "Error" );
        }
    }
}