ForNext
Only Do What Only You Can Do
Excel シート名を 列挙する
VBScript
更新日 : 2012.04.06
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
■ ADOを使用した場合
更新日 : 2008.05.23
Dim cn' As ADODB.Connection Set cn = CreateObject("ADODB.Connection") With cn .Provider = "Microsoft.Jet.OLEDB.4.0" .ConnectionString = "Data Source=" & WScript.Arguments(0) & ";Extended Properties=Excel 8.0;" .CursorLocation = 3' adUseClient .Open End With Dim rs' As ADODB.Recordset Set rs = cn.OpenSchema(20) 'adSchemaTables Do Until rs.EOF WScript.Echo rs.Fields("TABLE_NAME").Value rs.MoveNext Loop rs.Close cn.Close
JScript
更新日 : 2012.04.06
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;
■ ADOを使用した場合
更新日 : 2008.05.23
var cn = WScript.CreateObject("ADODB.Connection"); cn.Provider = "Microsoft.Jet.OLEDB.4.0"; cn.ConnectionString = "Data Source=" + WScript.Arguments(0) + ";Extended Properties=Excel 8.0;"; cn.CursorLocation = 3; // adUseClient cn.Open; var rs = cn.OpenSchema(20); // adSchemaTables while (!rs.EOF) { WScript.Echo(rs.Fields("TABLE_NAME").Value); rs.MoveNext; } rs.Close; cn.Close;
Perl
更新日 : 2012.04.06
use Win32::OLE; Win32::OLE::CreateObject("Excel.Application", $excelApp); $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();
■ ADOを使用した場合
更新日 : 2008.05.23
use Win32::OLE; Win32::OLE::CreateObject("ADODB.Connection",$cn); $cn->{Provider} = "Microsoft.Jet.OLEDB.4.0"; $cn->{ConnectionString} = "Data Source=".$ARGV[0].";Extended Properties=Excel 8.0;"; $cn->{CursorLocation} = 3; # adUseClient $cn->Open; $rs = $cn->OpenSchema(20); # adSchemaTables while (!$rs->EOF) { print $rs->Fields("TABLE_NAME")->Value, "\n"; $rs->MoveNext; } $rs->Close; $cn->Close;
PHP
更新日 : 2012.04.06
<?php // EXCELのインスタンス作成 $excelApp = new COM("Excel.Application"); $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); ?>
■ ADOを使用した場合
更新日 : 2008.05.23
<?php $cn = new COM("ADODB.Connection"); $cn->Provider = "Microsoft.Jet.OLEDB.4.0"; $cn->ConnectionString = "Data Source=".$argv[1].";Extended Properties=Excel 8.0;"; $cn->CursorLocation = 3; # adUseClient $cn->Open; $rs = $cn->OpenSchema(20); # adSchemaTables while (!$rs->EOF) { echo $rs->Fields("TABLE_NAME")->Value, "\n"; $rs->MoveNext; } $rs->Close; $cn->Close; ?>
Python
更新日 : 2012.04.06
# 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
更新日 : 2012.04.06
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
■ ADOを使用した場合
更新日 : 2008.05.23
require 'win32ole' cn = WIN32OLE.new("ADODB.Connection") cn.Provider = "Microsoft.Jet.OLEDB.4.0" cn.ConnectionString = "Data Source=" + ARGV[0] + ";Extended Properties=Excel 8.0;" cn.CursorLocation = 3 # adUseClient cn.Open rs = cn.OpenSchema(20) # adSchemaTables while !rs.EOF puts rs.Fields("TABLE_NAME").Value rs.MoveNext end rs.Close cn.Close
PowerShell
更新日 : 2012.06.22
$xlApp = New-Object -ComObject Excel.Application $xlApp.Visible = $true $xlApp.DisplayAlerts = $false #警告メッセージをOFF #ブックを読み取り専用で開く $book = $xlApp.Workbooks.Open($args[0], $false, $true) foreach($sheet in $book.Sheets) { Write-Host $sheet.Name } $book.Close() $xlApp.Quit()
Scala
F#
C
C++
C++Builder
VC++
C#
更新日 : 2012.04.11
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); } } }
Java
更新日 : 2012.04.11
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(); } } }