質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.53%

  • Ruby

    7621questions

    Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

  • Excel

    1518questions

    Excelは、マイクロソフト社が開発しているデータ集計や分析を行う表計算ソフトの一つです。文書作成や表計算、資料作成などの多彩な機能を備えており、統合パッケージであるMicrosoft Officeに含まれています。

RubyによるExcelファイルの新規作成ー保存について

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 301

Ruby-1.6

rubyでExcelを扱うときの質問です。
新規で作成したExcelに名前をつけて保存しようとすると、失敗してしまいます。
まだプログラミングを始めたばかりなのでエラーの理由がわからず、またいろいろ調べてみましたが
RubyでExcelを扱うさまざまなサイトを見てみてもそこまで詳しい説明はありませんでした。
おそらく新規で作成したExcelにはファイル名が存在せず、それにより環境変数が正しくなくて起こるエラーだと思うのですが...
解決方法がわかる方いましたらよろしくお願いします。

エラー内容

rb:11:in `method_missing': SaveAs (WIN32OLERuntimeError)
OLE error code:800A03EC in Microsoft Excel
ファイル 'E:\//6EDEC000' にアクセスできません。次のいずれかの理由が考えられます。

? ファイル名またはパスが存在しません。
? ファイルが他のプログラムによって使用されています。
? 保存しようとしているブックと同じ名前のブックが現在開かれています。

以下コード
require "win32ole"
fout =  "_2f.xlsx" 

excel = WIN32OLE.new("excel.application")
excel['Visible'] = TRUE
book = excel.workbooks.Add()

pwd = Dir::pwd
puts pwd + "/" + fout
book.SaveAs({'filename'=> pwd + "/" + fout})
book.Close(0)
excel.Quit()

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

Ruby + エラーメッセージ で検索すると、

参考URL1

がヒットしました。

内容によってはそれ専用のディレクトリ ( フォルダ ) が必要みたいです。


[ 追記1 ]

失礼。よく読んだらURL先は"Redmine"っていうソフトのプラグイン開発時の問題みたいです。

あくまで可能性として挙げるなら。

可能性1:
パスが間違っている。
解決方法1:
( 読み込み時のみ )
Rubyで提供されている関数・クラス等で「ファイルがあるか(存在するか)」みたいなチェックをしてこれがtrue
(に相当する奴でもいい)が返されるならパスは正しいが別の部分が問題。
もしfalseを返すならそもそもExcelファイルがないとか、別の場所を参照しているとか。
可能性2:
Excelを開こうとした(もしくは既に開いた)が、他のソフトか直接Excelを動かしているとか
で使用中の状態なのにアクセスしようとしている
解決方法2:
起動しているExcelを閉じた状態にする。他のExcelを操作するソフトも閉じる
可能性3:
保存時のファイル名が別のファイル名とダブっているために上書き状態になるかなんかで拒否されている状態
解決方法3:
別のファイルパスにする
可能性4:
そもそもお使いのRubyではサポートされていない ( バージョン○○から。みたいな場合もたまにある。 )
解決方法4:
     解決法4-1. 諦めて別の言語にする
     解決法4-2. 別の言語と連携をとる ( Java + C++だと JNI とか )
     解決法4-3. 別の言語に任せる ( 別ファイルを起動するやつとかで )
     解決法4-4. Ole以外の方法で、例えばExcelを操作するためのライブラリの導入を検討する

これぐらいしか思いつかない...

私としては「不正なファイルパスであるため」か「可能性4」辺りだとにらんでいる。

質問にあるエラーメッセージには「ファイル 'E:\//6EDEC000' にアクセスできません」とあります。

こういうファイルパスなんて見たことがない。ファイル名はともかく、"\//" なんて並びは見たことがない。

もしかするとファイル名が正しくされていない ( 例えば数列状態になっているとか ) とかの理由とか?

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/05/18 14:12

    ありがとうございます。そんなにすぐヒットするとは完全に私の努力不足でした。すみません。
    ただ、その参照URL1やその中のリンクの説明を読み、書いてあるとおり
    C:\Windows\System32\config\systemprofile
    に新規でDesktopというフォルダを作成しても、まったく同じエラーが出てしまいました。(もう片方のC:\Windows\SysWOW64\config\systemprofileに同じことをしても同様)
    これは解決方法として正しく理解できていないのでしょうか。

    キャンセル

  • 2018/05/18 14:57

    上記で提示したサイトはRedmineっていうソフトのプラグインを開発するときのものみたいです。
    状況によって違いますよ。
    たぶん、普通にコマンドラインから動かそうとしているものだと思いますが。

    キャンセル

  • 2018/05/18 15:45

    丁寧なご返答ありがとうございます。上記1~4やファイル名の並びなどいろいろ考え試した結果、解決することができました。
    最後に仰っていたとおり、"\//" の並びがおかしく、現在のパスを取得した
    pwd = Dir::pwd
    のコマンドの後、
    pwd.gsub("/","\\")
    としてパスを処理すると解決することができました。
    いろいろ教えていただき本当にありがとうございました。とても助かりました。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.53%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Ruby

    7621questions

    Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

  • Excel

    1518questions

    Excelは、マイクロソフト社が開発しているデータ集計や分析を行う表計算ソフトの一つです。文書作成や表計算、資料作成などの多彩な機能を備えており、統合パッケージであるMicrosoft Officeに含まれています。