From: eiichi_maekawa@... Date: 2010-01-08T15:11:26+09:00 Subject: [ruby-list:46752] excel ファイル 絶対パスの取得について 【RDEとeclipseの違い】 前川です。 excelファイルの絶対パスの取得で、困っています。 絶対パスを取得したいのですが、RDE と、ecliplseでは、異なった結果となりま す。 RDEでの実行結果は、 filename=test_sample.xls # filename=test_excel.rb # D:\Apache2.2\htdocs\ruby_prg\em_ruby\windowsSample\excelPrg\test_excel.rb D:\Apache2.2\htdocs\ruby_prg\em_ruby\windowsSample\excelPrg\test_sample.xls eclipseでの実行結果は、 filename=test_sample.xls # filename=test_excel.rb # D:\Apache2.2\htdocs\ruby_prg\test_excel.rb D:\Apache2.2\htdocs\ruby_prg\test_sample.xls RDEでの実行結果が正しいのですが、eclipseでは、 em_ruby\windowsSample\excelPrg\ が省略され、結果 エクセルファイルが見つか らず、 以下のメッセージが出力されます。 ==========eclipseでのエラーメッセージ==================== OLE error code:800A03EC in Microsoft Office Excel 'D:\Apache2.2\htdocs\ruby_prg\test_sample.xls' が見つかりません。ファ イル名およびファイルの保存場所が正しいかどうか確認してください。 [ファイル] メニューの最近使用したファイルの一覧からファイルを開こうとしてい る場合は、そのファイルの名前が変更されていないこと、移動または削除されてい ないことを確認してください。 HRESULT error code:0x80020009 例外が発生しました。 from D:/Apache2.2/htdocs/ruby_prg/em_ruby/windowsSample/excelPrg/test_excel.rb:22 #←:22は、book = xl.Workbooks.Open(filename)の行 filename=test_sample.xls # filename=test_excel.rb # D:\Apache2.2\htdocs\ruby_prg\test_excel.rb D:\Apache2.2\htdocs\ruby_prg\test_sample.xls ====================================== excelファイルをD:\Apache2.2\htdocs\ruby_prg\におけば、eclipse+rubyでも問題 なく動作します。 Rubyメーリングに投稿するべきか悩みましたが、他に伝も無く、投稿させていただきま した。 eclipse+rubyで使用しておられる方が居られましたら、ご教示のほど、お願いしま す。 RDEのバージョン;;1.1.1.1 (RDEは、http://homepage2.nifty.com/sakazuki/rde/index.html からダウンロー ドしたものです。) rubyのバージョン Microsoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. C:\Documents and Settings\M118543>ruby -v ruby 1.8.7 (2009-06-12 patchlevel 174) [i386-mswin32] ECLIPSEのバージョン Eclipse for PHP Developers Build id: 20090920-1017 (c) Copyright Eclipse contributors and others 2000, 2009. All rights reserved. Visit http://eclipse.org/ This product includes software developed by the Apache Software Foundation http://apache.org/ eclipse用ruby plug inのバージョン Ruby 開発ツール 0.6.0 org.rubypeople.rdt.feature.group (自動でインス トールしたもの) テストに使用したコーディング #!D:/ruby/bin/ruby.exe -Ks require 'win32ole' # 本プログラムと同じフォルダにあるエクセルファイルのパスを取り出す def getAbsolutePath filename puts 'filename='+filename #←デバッグライト ファイル名 fso = WIN32OLE.new('Scripting.FileSystemObject') puts fso #←デバッグライト return fso.GetAbsolutePathName(filename) end # 同一フォルダ内のtest_sample.xls のパスを取得する。 filename = getAbsolutePath("test_sample.xls") #←パスつきエクセルファイルの 名称を取得する filename1 = getAbsolutePath("test_excel.rb") #←デバッグライト 実行プログラ ムのファイルパスつきファイル名 puts filename1 #←デバッグライト ファイルのパス xl = WIN32OLE.new('Excel.Application') # エクセルファイルを開く puts filename #←デバッグライト ファイルパスつきエクセルファイル名 book = xl.Workbooks.Open(filename) begin book.Worksheets.each do |sheet| #ワークシート sheet.UsedRange.Rows.each do |row| # 行 record = [] row.Columns.each do |cell| # 各セル record << cell.Value # セルの値を取り出す end puts record.join(",") #各行ごとにまとめる。 end end ensure book.Close #ワークブックを閉じる xl.Quit #アプリケーション(エクセルプログラム)を閉じる end ====================================== よろしくお願いします。