• ベストアンサー

【ファイルメーカーPro5.5】 指定のフォルダを開く

  当方看板屋なのですが、仕事の案件を管理するデータベースをファイルメーカーPro5.5(MacOS9.2)にて作成しています。 質問ですが、ファイルメーカーのデータベースから、その案件の製作データなどを格納したフォルダ(OS内のフォルダ)を開くというような操作をしたいのですが・・・ 1、ダイアログでフォルダを指定して、テキストフィールドにフォルダのパスを書き出す方法 2、書き出されたパスからフォルダを開く方法 を、それぞれ知りたいのですが、ご存知の方おられるでしょうか。 先日、別の質問(http://oshiete1.goo.ne.jp/qa2506230.html)にて、オブジェクトフィールドを使って画像データを開く方法を教えていただいたのですが、今度は同じようなことをフォルダでやれないかと考えまして・・・ ウインドウズなら「URLを開く」で、開くことは可能らしいのですが、Macで試してみましたができないみたいです。アップルスクリプトを使えば可能なような気がしてるのですが、当方、アップルスクリプトは勉強中でして、まだ実用するほどの知識がありません。 1のところで「ダイアログで指定」と書きましたが、入力が楽だろうと思ったからなんですが、別の方法でもかまいません。 ただ、パスを毎回手入力するのは避けたいです。(膨大な量なので) よろしくお願い致します。  

質問者が選んだベストアンサー

  • ベストアンサー
  • chieffish
  • ベストアンサー率44% (1149/2554)
回答No.5

エラーが出るのはfilepathですかfolderpathですか? filepathは使っていないのでスクリプトの中にこれがあるとエラーになります。 下のスクリプトをコピーしてスクリプト記述窓にペーストしてみてください。 activate set folderPath to get data cell "Folder" of current record tell application "Finder" select folder folderPath reveal selection open selection end tell activate application "Finder"

kee_yan
質問者

お礼

フォルダの選択、フォルダを開く作業、ともにほぼ作動しました。 ただ新たな問題点が・・・ どうもフォルダパスの文字数が長くなるとエラーが出るようなんです。 文字数が原因かはまだ調査中なんですが、いくつかフィールドに書き出せないフォルダがあって、それらにスクリプトを実行したら alias"パス名"をstringに型変換することはできません。(エラー-1700) とエラーメッセージが出ます。 同じように、書き出しができているフォルダの、さらに下層のフォルダも書き出せませんでした。 傾向的に、パスの文字数に制限があるのかなと感じたのですが・・・

kee_yan
質問者

補足

>エラーが出るのはfilepathですかfolderpathですか? すいません。描き間違えがありました。エラーは「folderpath」のほうです。 追加アドバイスを参考にいろいろ試してみますね。 成功したらまた報告させていただきます。 ありがとうございます。

その他の回答 (6)

  • chieffish
  • ベストアンサー率44% (1149/2554)
回答No.7

>傾向的に、パスの文字数に制限があるのかなと感じたのですが いくら深い階層のフォルダを指定してパスが長くなってももエラーは出ないようです。 同じような環境でテストするためOSXのクラシック環境でFM4で試しましたが、FM4でも フィールドの文字数制限は全角32,000文字です。フォルダ名に特殊な記号とかを使ってい ませんか?でもフォルダ名に使えない文字が入っているとOSが警告しますし・・・

kee_yan
質問者

お礼

そうですか。そちらでは普通にできましたか・・・ 試しに、問題のあったフォルダの名前を短く変更すると大丈夫でした。 ただ、不可解なのは、当該のフォルダよりも長い文字数の別のフォルダは大丈夫だったりします。 文字列も疑ってみたので名前をいろいろ変更して試したのですが、普通の全角文字でエラーが出るようです。 それと、普通に大丈夫だったフォルダも、下層のフォルダを指定すると、やはりダメでした。 現状思い当たるのはフォルダパスの文字数しか考えられないんですけど・・・ひとまず作業自体はできるようになったので、この件は一旦締め切って、別で質問を立てようと思います。ここの補足に新設の質問のURLを載せてから、質問を締め切ります。 親身にいろいろありがとうございました。 本当に助かりました。

kee_yan
質問者

補足

質問を新設しました。 【ファイルメーカーPro5.5】 ファイルパスの文字制限? http://oshiete1.goo.ne.jp/oshiete_new.php3

  • chieffish
  • ベストアンサー率44% (1149/2554)
回答No.6

小出しになってしまってすみません。(私も苦手なので) 親フォルダ表示があった方がいろいろと便利なこともあるので前述のスクリプト にしましたが、直接フォルダを開くのは activate set folderPath to get data cell "folder" of current record tell application "Finder" to open folder folderPath でいいようです。

回答No.4

なるほどchooseでいいのか。chieffishさんありがとう。 というわけで、最初の希望どおりダイアログを出してフォルダを選ぶスクリプトは、 AppleScriptを実行  set the folder_path to (choose folder) as text  set cell "folderpath" of current record to Folder_Path になります。 開く方はAppleEvent一発なんだから、前回のfile_openをフィールド名だけ変えて流用すればいいんですよ。

kee_yan
質問者

お礼

この回答のスクリプトを試しましたが、うまく作動しませんでした。 OS9.2だからかなぁ・・・ とりあえず書き出しのほうは、No5のやりかたでいけましたが、今度は新たな不具合が・・・ フォルダを開くほうですが、No6のやりかたでいけたのですが、ウインドが前面に来てくれなかったんで、grumpyさんに教えていただいたAppleEventを使った方法と組み合わせたところ上手くいきました。 ありがとうございました!

  • chieffish
  • ベストアンサー率44% (1149/2554)
回答No.3

二つめのスクリプトでは親フォルダしか開きませんね。 reveal selectionのうしろにopen selectionを追加。

kee_yan
質問者

補足

open selection は最初、半角スペースの後に入れたらエラーになったんで、改行して入れると大丈夫でした。 いずれにしても、実行時の「filepath変数は定義されていません。」のエラーが出ます・・・

  • chieffish
  • ベストアンサー率44% (1149/2554)
回答No.2

ファイルメーカーのファイルにFolderというテキストフィールドを作り、 スクリプトAを作ります。スクリプトの内容は「Applescriptを実行」のみで記述は activate set folderPath to (choose folder with prompt "フォルダーを指定して下さい") set pathtext to folderPath as string tell application "ファイルメーカー Pro.5.5" activate set cell "Folder" of current Record to pathtext end tell このスクリプトを実行すれば、最初にファイルメーカー本体の場所を聞いてくるの で指定し、次に目的のフォルダーを指定すれば、そのパスがFolderフィールドに入 ります。 もうひとつスクリプトBを作って、同じように activate set folderPath to get data cell "Folder" of current record tell application "Finder" select folder folderPath reveal selection end tell activate application "Finder" として、このスクリプトを実行すれば現在のレコードのFolderフィールドに入って いるパス先のフォルダが開きます。

kee_yan
質問者

補足

目からウロコです! ありがとうございます!! とりあえずフォルダパスを書き出すほうのスクリプトは成功。 ただ、フォルダパスからフォルダを開くスクリプトでは 「folderpath変数は定義されていません(エラー -2753)」 とエラーメッセージが表示されます。 もう一息っぽいんですが・・・

回答No.1

前回の質問でのfilepathフィールドを見て下さい。 DATA:user:Graphics:chromchart.pdf のようになっているはずです。ここから最後のファイル名を削って フォルダ名までにしてみます。 DATA:user:Graphics: こんな感じになりますね。で、そのまま前回のfile_openスクリプト を走らせれば、Finderで該当するフォルダが開くことが判ります。 なるほどねってわけで、アプローチは2つ。 1.前回のfilepathフィールドを加工して「挿入した図を含むフォル ダ」を示すfilderpathフィールドを作ってやる。「最後のコロンま で」なんだから、 left(filepath,1,position(filepath,":",512,-1)) でオッケー。 2.前回とは独立にfolderpathを簡単に取り込むスクリプトを作る。 ある程度確認しながら作業することを考え、「Finderで一番手前の ウィンドウを取り込む」仕様にすると、 AppleScriptを実行  tell application "Finder" to set the folder_path to (folder of the front window) as text  set cell "folderpath" of current record to Folder_Path みたいな感じ。実はファイルダイアログを表示してフォルダを指定 する方法を知らないんだけど。

kee_yan
質問者

お礼

前回も今回もありがとうございます! それにしてもみんなAppleスクリプトにお詳しいんですね^^ 自分ももっと勉強してファイルメーカーを使いこなしたいんですけど、どんな本読めばいいんでしょうか?

関連するQ&A

  • ファイルメーカーProでテキストフィールドに入力したファイル名のデータベースを開く方法について

    ファイルメーカーPro8を利用しております。 スクリプトを利用して、テキストフィールドに入力したファイルメーカーProのデータベースファイルを開きたいと思っております。 「ファイルを開く」スクリプトでは決まったファイル名を開くことはできましたが、動的(フィールド名に入っている値を参照)にファイル名を指定することはできませんでした。 なにか良い方法がないでしょうか?

  • ファイルメーカーから特定のフォルダーを開く

    ファイルメーカー6である情報管理のプログラムを作っています。 ある特定のフィールドと同一のフォルダを開くスクリプトの作成は可能でしょうか。  たとえば、あるデータベースには氏名というフィールドがあります。コンピュータのドライブDには、氏名毎のフォルダーがありその人の画像データがたくさん入っています。  Aさんのデータを表示しているときに、あるボタンを押すと、Aという名のフォルダを開くという操作をしたいのです。  本当はAさんのデータの画面で、その画像をサムネイルの形で表示させたかったのですが、それをすると極めて重くなってしまいあきらめました。それで上記のようなことができないかと考えたわけです。  方法があれば教えてください。よろしくお願いします。

  • ファイルメーカーでフォルダパスを取得したい

    写真のデータベースを作っています。 50音順で種別ごとに写真が分かれています。共有フォルダに入っています。 file://db01/共有フォルダ/ヤ行/ヤマイモ といった感じでフィールドにパスを直接書き、「URLを開く」でフォルダを開く事には成功しましたが、フォルダパスを登録する時のスクリプトはどうかけばよいでしょうか。 イメージとしては 参照ボタンを押す エクスプローラーが立ち上がる フォルダを指定する OKを押すと指定フォルダのパスがフィールドに格納される といった具合です。 ファイルメーカーpro7 windows2000 にて使用しています。 ご教授お願いいたします。

  • ファイルメーカーで繰り返しフィールドの一括消去

    ファイルメーカーで繰り返しフィールドに入力した データをスクリプトで一括で消去したいのですが、 スクリプトの時点では繰り返しフィールドの繰り返し 位置は指定できるのですが、1から20といった指定が 出来ません。 教えてください。 よろしくお願いいたします。

  • File Maker Pro でファイルブラウズ

    ひとり親方状態で看板屋を自営してます File Maker Pro 5.5(Mac)にて、自作ながら、見積りや顧客・業務管理などのデータベースを作成してます。 質問ですが、File Maker Pro の中で、OSのフォルダの中にあるイラストレータ等のファイルを参照するようなことはできるでしょうか? なにがやりたいかと言いますと、たとえばFile Maker Proで作成した見積書のレコードの中に、その案件のデザインのデータや設計図面(イラストレータやフォトショップのデータ)などを、関連づけして探しやすくしたいんです。 つまり、File Maker ProでOSの中のフォルダやファイルなどをブラウズするようなイメージなのですが、そういうことは可能なのでしょうか? Ver5.5でムリでも、バージョンアップすれば可能だったりしますか? それとも、アプリの性質上そういうことはムリでしょうか… ムリだとして、上記のようなことをしたい場合、ほかに良い知恵などあれば助かります。 当方、File Maker Proは基本操作はだいたい理解しましたが、複雑なリレーションやスクリプト、関数などはまだ勉強中です。 このソフトに色々な可能性を感じてるので、もっと勉強したいです。

  • ファイルメーカー5.5から4.0への変換

     ファイルメーカー5.5で使用しているデータベースのフィールドやレイアウトなどを4.0に戻したいのです。データを移行するのではなく、100近くあるフィールドと入力制限などの設定、レイアウトなどを移したいのですが簡単な方法はあるでしょうか。  4.0のデータベースは5.5で開けば簡単に変換できますが、つまりその逆をしたいのです。

  • Appleスクリプトでフォルダ内ファイルを開く方法

    フォルダ内にエクセルファイルが1000個程あり、 そのエクセルファイルを一つずつ開いて、 別のファイルにそのファイルの値をコピーするということをやりたいと思います。 別のファイルにそのファイルの値をコピーするというのは、 自分でも何とかできそうなので、 (1)ファイルが入ったフォルダを、ダイアログで指定する方法 (2)フォルダ内のエクセルファイルを順番に開いて、作業が終わったら閉じる方法 のAppleスクリプトでの記述方法を、教えていただけないでしょうか? Windowsのエクセルファイルでマクロを作成したのですが、 Macでは動かず、調べるとAppleスクリプトで作成するということが分かりましたが、 そこから先が、本当にお手上げ状態です。 どうぞよろしくお願いします。

  • フォルダ参照ではなくファイルを指定したい。

    フォルダの参照ダイアログボックスを使用して ファイルを選択できるようにしています。 プログラムでcsv形式で保存し、そのcsv形式ファイルを指定して開くという動作を目的としています。 そのファイル選択を固定でなく可変で選択したいと思っています。 Dim ShellApp As Object Dim oFolder As Object Set ShellApp = CreateObject("Shell.Application") Set oFolder = ShellApp.BrowseForFolder(0, "ファイル選択", &H4000,"C:\test") msgbox(oFolder) このような感じで、フォルダのみではなくファイルを指定することに成功しました。 しかし、このフォルダ参照ダイアログが表示されたときに、何も選択せずに キャンセルボタンをクリックするとエラーが出て止まってしまいます。 目的とする動作はできてはいるのですが、キャンセルするとエラーになるので、この原因がわからず困っています。 キャンセルボタンに関することを記述する必要があるのでしょうか? また、この他にファイルを指定するのに適した方法がありましたら教えてください。 参照するフォルダを指定しているのでパスの取得は必要ありません。 ファイルが選択できたらOKです。 フォルダのパス取得のプログラムはよくサンプルを見かけるのですが、 ファイル選択のサンプルはあまり見かけないです(-_-;) また、この方法ではC:\と絶対パスで指定していますが、exeファイルが存在する場所からの相対パスでの指定はできないのでしょうか? csvで保存する時は"./test/test.csv"などと記述して書き込みできていたのですが、 このようなパスを書くとエラーとなりファイルを見つけられないといわれてしまいます。

  • ファイルメーカーPro5でのスクリプト定義について

    ファイルメーカーPro5で 繰り返しフィールド(例えば10個の)データを 切り取って、別のフィールドに貼り付けるスクリプト定義の仕方を詳しく教えてください。 考えているのは下記の例です。 今年度の販売物品(繰り返しフィールド:10個のデータ)を 別の空白フィールド(繰り返しフィールド:10個のデータ)に 切り取って貼り付ける方法です。 単に 切り取り[選択、「今年度の販売物品」] 貼り付け[選択、「別のフィールド」] ですと、繰り返しフィールドの1行目のデータしか スクリプトが実行されません。 あと「Loop」の使い方がよく分かりません。 併せて教えてください。

  • ファイルメーカーのスクリプト

    素人です。ファイルメーカーで顧客管理のような簡単なデータベースを作成しています。データベースを開いている時に、別のデータベースファイルを開いて表示させるボタンを作ろうと思い、スクリプトを作っています。別のデータベース(台帳)を開くことはできますが、その時に同じ人のデータを表示させるにはどうしたらよいでしょうか。  もうひとつ、あるデータベースを開くと、かならず最初のデータが表示されますが、開いた時にかならず最後に入力したデータを表示させる方法はないでしょうか 。