初心者のFileMaker pro Q&A (旧掲示板)

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2014-04-11 10:37:12

Toshi
Member

フォルダ名の取得

テーブルに「フォルダ名」というフィールドを作成します。
そのフィールドに使用者が選択したフィルダ名を表示するスクリプトは作成できますか。
使用者がフォルダ選択する場合に、[参照]というボタンを作成し、そのボタンをクリックするとPCのフォルダが表示(エクスプローラのようなもの)され、選択するというイメージです。

Offline

#2 2014-04-11 11:02:36

Hiro
Member

Re: フォルダ名の取得

環境は?

Offline

#3 2014-04-11 17:53:57

Toshi
Member

Re: フォルダ名の取得

Windows7です

Offline

#4 2014-04-11 20:16:39

Hiro
Member

Re: フォルダ名の取得

FMバージョンは? まあ、OSが分かれば良いか。

Win標準のHTAアプリを使って、選択フォルダのパスを取得します。
老婆心から、フォルダ名だけではなくフォルダパスを得る様にしてあります。

【フィールド 定義】
●「フォルダ名」テキストフィールドを作成。
●HTAプログラムを格納しておく「HTA」グローバルフィールドを作り、以下のコードをコピー入力。

<script type='text/javascript'>
clipboardData.clearData('Text');
var sh = new ActiveXObject( 'Shell.Application' );
var objShell = new ActiveXObject('WScript.Shell');
GetSpecialFolder = objShell.SpecialFolders('Desktop');
var initPath = GetSpecialFolder;
var folder = sh.BrowseForFolder( 0, 'フォルダを選択下さい', 512, initPath );
if( folder  ==  null ) {
 clipboardData.setData('Text','キャンセルボタンが押されました。');
} else {
 clipboardData.setData('Text',folder.Self.Path);
}
sh = null;
objShell = null;
window.close();
</script>

【修正履歴】 2014/9/5 19:07 #10レスのご指摘により11行目を改善(修正済み)
    △ clipboardData.setData('Text',folder.Items().Item().Path);
    ↓
    ◎ clipboardData.setData('Text',folder.Self.Path);


【選択フォルダパス取得 スクリプト】

● 消去 [選択; テーブル::フォルダ名]
● 変数を設定 [$出力パス; 値:"file:" & Get(テンポラリパス) & "temp.hta"]
● フィールド内容のエクスポート [テーブル::HTA; 「$出力パス」; 自動的に開く]
● Loop
●  スクリプト一時停止/続行 [間隔(秒): 1]
●  貼り付け [選択; テーブル::フォルダ名]
●  Exit Loop If [テーブル::フォルダ名 ≠ ""]
● End Loop
● フィールドへ移動 []

Last edited by Hiro (2014-09-06 14:07:07)

Offline

#5 2014-04-16 13:10:34

Toshi
Member

Re: フォルダ名の取得

「Hiro」さん
有難うございます。
ディレクトリ名が取得できました。

Offline

#6 2014-04-16 13:25:56

Hiro
Member

Re: フォルダ名の取得

【補足】
「ディレクトリ名」でなく、もし「フォルダ名」だけが好ければ、
HTAフィールド内容の11行目末尾を Path → Name へ変更。

Offline

#7 2014-09-04 14:50:34

kobu
Guest

Re: フォルダ名の取得

win7 FM13です。

いつも参考にさせていただきありがとうございます。

デスクトップを選択した場合、「未定義またはNull参照のプロパティ"path"は取得できません」のエラーがでますこれを回避してデスクトップを選択できますでしょうか?
よろしくおねがいます。

#8 2014-09-04 18:33:35

Hiro
Member

Re: フォルダ名の取得

Win7では隠しフォルダになっていますので、隠しフォルダを表示する設定に変更してください。
隠しフォルダを表示する設定にして次の順で辿り着けます。

コンピューター→ローカルディスク(C:)→ユーザー→ユーザー名→デスクトップ

Offline

#9 2014-09-05 11:58:36

tester
Guest

Re: フォルダ名の取得

非表示は関係なくて、トップノードのデスクトップを選択するとエラーになりますね。
他に、「コンピュータ」とか「ライブラリ」とかを選択すると、パスが取得できませんから、どうしたものか。選択し直しさせる?

#10 2014-09-05 18:37:06

qb_dp
Member

Re: フォルダ名の取得

clipboardData.setData('Text',folder.Items().Item().Path);
この部分を
clipboardData.setData('Text',folder.Self.Path);
に変更で良さそうです。

参考:
Hey, Scripting Guy! フォルダのみをユーザーに選択させるダイアログ ボックスを表示する方法はありますか :
http://gallery.technet.microsoft.com/sc … fc7c0e9b4f

Offline

#11 2014-09-05 19:02:44

Hiro
Member

Re: フォルダ名の取得

qb_dpさん、ナイスなフォロー感謝です。

なるほど、初期設定のデフォルトフォルダ(デスクトップ)を含め、全ての選択フォルダに有効ですネ。

Offline

#12 2014-09-05 19:56:36

wader
Member

Re: フォルダ名の取得

512でなく513にすれば、フォルダ以外は選択できなくなります。

Offline

#13 2014-09-06 11:15:59

kobu
Guest

Re: フォルダ名の取得

皆様的確なアドバイスありがとうございました。
描いていた通りの結果を得ることができました。
今後ともよろしくお願いします。

ところで、今後vbscript等の利用をする場合の参考に、このスクリプト(?)の仕組みを説明していただくことは可能でしょうか?

#14 2014-09-08 11:36:21

tim
Guest

Re: フォルダ名の取得

フォルダ選択のダイアログを出して、クリップボードにコピーするだけ。

BaseElementsというプラグインを使うと、関数1つでOKです。

#15 2014-09-09 11:44:30

kobu
Guest

Re: フォルダ名の取得

アドバイスありがとうございまし。
そういうことも可能なのですね。
参考にしたいと思います。

Registered users online in this topic: 0, guests: 1
[Bot] ClaudeBot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.005 seconds, 7 queries executed - Memory usage: 527.93 KiB (Peak: 548.84 KiB) ]