[#47049] fileのopenに関する動作についての質問 — 高橋作郎 <sakurou3960@...>

はじめまして。

14 messages 2010/05/04

[ruby-list:47085] Win32oleでExcel Worksheetsの選択

From: Tomoya Katsuki <tomoya.katsuki.zj@...>
Date: 2010-05-14 00:42:11 UTC
List: ruby-list #47085
はじめまして、甲木と申します。

ちょっと困ったことが発生したので、ご存知の方がいらっしゃいましたら
アドバイスをいただけたらと思います。

win32oleを使用して、
  Excelファイルを開く
  シートを選択する
  必要なデータをcsvとしてファイルに書き出す
という処理をさせていました。

ところが、新しいExcelファイルをもらったところ
シートを選択する行で
excel2csv_sif.rb:36 in `method_missing`: unknown property or method `worksheets`(WIN32OLERuntimeError)
  HRESULT error code:0x800a9c64
と発生してしまいます。

原因をご存知の方がいらっしゃいましたら教えていただきたいです。

新しいExcelファイルというのは、今まで操作できていたExcelファイルに対して
値が変わっているのと、ExcelVBAが変わっているくらいで本件のような問題は
発生しないと思っていました。

動作環境 WindowsXP(32bit) SP3
         Ruby1.8.7-p22
         Excel2003

ソースコード(一部)
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
# Windows用ライブラリを読み込む
require 'win32ole'
$KCODE = 'SJIS'

begin
  xl = WIN32OLE.new('Excel.Application')
  #ディレクトリをSCAN
  DIRNAME = ARGV[0]
  dir = Dir.open(DIRNAME)
  dir.each { |fname|
    #ファイル名をチェック
    if (fname =~ /\.xls$/) then
      # 出力ファイル名を設定
      OFILE = fname.gsub(/\.xls$/, ".csv")
      of = File.open(DIRNAME+OFILE, "w")
      # Excelファイルを開く
      xlbook=xl.Workbooks.Open(DIRNAME + fname)
      # シートをスキャン
      #sheet=xlbook.Worksheets("テストケース")  <-ここでエラーが出ます
      sheet=xlbook.worksheets(1)                <-この2行どっちの形式でも結果は同じです



In This Thread

Prev Next