Masaki Suketa wrote:
> 助田です。
>
> In message "[ruby-list:28041] saveAs"
>     on 01/02/19, Kenji Noda <zaq94465a / cat.zero.ad.jp> writes:
>
> > require 'win32ole'
> > wd=WIN32OLE.new("Word.Application")
> > wd['Visible']=TRUE
> > wdoc=wd.Documents.open "C:/WINDOWS/デスクトップ/word2text/docs/test.doc"
> > wdoc.saveAs "C:/WINDOWS/デスクトップ/word2text/docs/test.txt",4
> > wdoc.close
> > wd.quit
> > 確かに指定したワードファイルは開けます。しかしの保存部分でエラーです。
> > script.rb 5:in method_missing : saveAs(RuntimeError)
> >   OLE rb_compile_error:0 in <Unknown>
> >   <No Description>
> > 型が一致しません
> >   from script.rb:5
> > とでます。
>
> 野田さんは既にOffice 2000にバージョンアップされたようですが、
>
> > wdoc.saveAs "C:/WINDOWS/デスクトップ/word2text/docs/test.txt",4
>
> 
> wd.wordbasic.filesaveAs "C:/WINDOWS/デスクトップ/word2text/docs/test.txt",2
> に変更すると素のWord 97でも動くかも知れません。
>
> 情報源は
> http://support.microsoft.com/support/kb/articles/Q169/5/65.ASP
> http://support.microsoft.com/support/kb/articles/Q169/5/47.ASP
> です。
>
> ひょっとすると新井さんの
> Subject: [ruby-list:25791] win32ole 0.1.4 (型が一致しません)
> も同様に対処できるかも知れませんが、ちょっと方法を見つけ
> られませんでした。
>
野田です
require 'win32ole'
wd = WIN32OLE.new("Word.Application")

home=Dir::pwd
path=home+"/word"
Dir::chdir("word")
dirinfo=Dir::entries(path)
mark='\\'  <----------
dirinfo.each do |doc|
  doc = File.expand_path(doc)
  next if FileTest.directory?(doc)

  savefile=doc.gsub '/word/','/word/text/'
  savefile.gsub! /\.doc/is,".txt"

 doc.gsub! '/',mark        <---------
 savefile.gsub! '/',mark   <---------

  begin
    puts doc
    wdoc = wd.Documents.open doc
    wdoc.saveAs savefile,4
    wdoc.close
  rescue
    $stderr.print $!.message, "\n"
  end
end
puts "Completed!!"
sleep(1)
wd.quit
これで試したら会社のWord97でOKでした