[#46732] ヒアドキュメント内の変数展開が正常に行われない — ShingoKintaka <kamuycikap@...>

Ruby  :1.8.7 (Ubuntu9.10)

12 messages 2010/01/05
[#46733] Re: ヒアドキュメント内の変数展開が正常に行われない — rubikitch@... 2010/01/06

From: ShingoKintaka <kamuycikap@tulip.ocn.ne.jp>

[#46800] DLモジュールの使い方 — kouichi_someya@...

染谷と申します。

12 messages 2010/01/20
[#47678] プログラム実行時に「[BUG] Segmentation fault」 — 染谷 康一 <kouichi_someya@...> 2010/12/09

染谷と申します。

[ruby-list:46752] excel ファイル 絶対パスの取得について 【RDEとeclipseの違い】

From: eiichi_maekawa@...
Date: 2010-01-08 06:11:26 UTC
List: ruby-list #46752
前川です。

excelファイルの絶対パスの取得で、困っています。

絶対パスを取得したいのですが、RDE と、ecliplseでは、異なった結果となりま
す。

RDEでの実行結果は、

filename=test_sample.xls
#<WIN32OLE:0x297da18>
filename=test_excel.rb
#<WIN32OLE:0x297d93c>
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
#<WIN32OLE:0x297d978>
filename=test_excel.rb
#<WIN32OLE:0x297d89c>
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
#<WIN32OLE:0x297d978>
filename=test_excel.rb
#<WIN32OLE:0x297d89c>
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
======================================

よろしくお願いします。


In This Thread

Prev Next