Ruby(windows)についての質問です。

windows では、よくファイル一覧画面をだして、ファイルを選択することが可能です。VBAでは、
Application.GetOpenFilenameを使うと簡単にできます。これと同じことをRuby でやるには
どうするといいのでしょうか?

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:2010/12/28 15:15:02
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答4件)

id:asuka645 No.1

回答回数856ベストアンサー獲得回数97

ポイント23pt

WSHを使う必要があります。

こんな感じです。

require 'win32ole'
obj=WIN32OLE.new("MSComDlg.CommonDialog")
obj.MaxFileSize =255    
obj.Filter = "すべてのファイル (*.*)|*.*|"
obj.InitDir ="C:\\" 
obj.ShowOpen 
file=obj.FileName
wsh = WIN32OLE.new('WScript.Shell')

参考「Windows Scripting Host 14

id:garyo No.2

回答回数1782ベストアンサー獲得回数96

ポイント23pt

ActiveScriptRuby

http://www.geocities.co.jp/SiliconValley-PaloAlto/9251/ruby/

をインストールした場合、VisualuRubyもインストールするので

FormDesigner(VisualuRuby計画のGUIビルダ)

http://sourceforge.jp/projects/fdvr/

http://vruby.wiki.sourceforge.net/FormDesigner

http://vruby.sourceforge.net/cgi-bin/wiki.cgi?FormDesigner

をダウンロードすると、通常のWindowアプリが作れます。

ファイル一覧ダイアログも使用可能です。

id:henschel No.3

回答回数10ベストアンサー獲得回数1

ポイント22pt

gemをインストールする必要がありますが、

WxRubyというフレームワークを使用することで

ファイル選択のためのダイアログ(FileDialog)を表示することができます


また、WxRubyはWindows以外の環境(MacやLinux)でも利用可能なので

この方法を使えば多くの環境で同じコードを動作させることができます


インストールは以下のコマンドで実行できます

gem install wxruby


以下のコードはテキストファイルまたは任意の種類のファイルを選択して、そのファイル名を標準出力に出力するだけのサンプルです

require 'rubygems'
require 'wx'

class MyApp < Wx::App
  def on_init
    dlg = Wx::FileDialog.new(nil, "ファイルを選択", "", "", "テキスト(*.txt)|*.txt|すべてのファイル(*)|*")
    if dlg.show_modal==Wx::ID_OK then
      puts "選択されたファイル: #{dlg.get_path}"
    else
      puts "キャンセルされました"
    end
  end
end

MyApp.new.main_loop
id:garyo No.4

回答回数1782ベストアンサー獲得回数96

ポイント22pt

ruby/tkを使った例です。

ruby/tk自体は標準ライブラリなのですが、ActiveTclをインストールする必要があります。

http://www.activestate.com/activetcl/downloads/

最新のActiveTcl 8.5.2.0は動かないので、ActiveTcl 8.4.19.0を入れましょう。

うまく動かない場合はC:\Tcl\lib\tcl84.libをソースと同じ所にコピーしてみてください。


require 'tk'

lbl=TkLabel.new
lbl.text="file name"
lbl.pack

etr=TkEntry.new
etr.pack

btnSet=TkButton.new
btnSet.text = "File Select"
btnSet.command{etr.value = Tk.getOpenFile}
btnSet.pack


btn=TkButton.new
btn.text = "quit"
btn.command{exit}
btn.pack

Tk.mainloop

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません