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

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

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

You are not logged in.

Announcement

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


#1 2017-01-27 11:24:45

パス
Guest

ファイルパス又はフォルダーパス

FM12,Go12。

ファイル登録(オブジェクトフィールド)
ファイルパス =Get As Text(ファイル登録)
を作成しました。
ファイル登録にファイルをドラックしましたが、ファイルパスには「仕様書.xlsx」だけ表示しパスがないです。
1.ファイルパスは Get As Text では取得出来ないのでしょうか。
2.最終的にはボタンを押すとファイルを登録しているフォルダーを見ることができるようにしたいと思っています。
  こちらを検索すると取得したファイルパスを加工してフォルダーを見ると書かれてましたので、ご相談します。

#2 2017-01-27 11:55:57

tim
Guest

Re: ファイルパス又はフォルダーパス

ドラッグではファイルの実体が挿入されて元のファイルとは無関係になるので、ファイル名しか存在しません。
ファイルを挿入で「参照のみ」にすれば取得できますが。。。

#3 2017-01-27 14:48:32

パス
Guest

Re: ファイルパス又はフォルダーパス

tim wrote:

ドラッグではファイルの実体が挿入されて元のファイルとは無関係になるので、ファイル名しか存在しません。
ファイルを挿入で「参照のみ」にすれば取得できますが。。。

有難う御座います。
ファイル挿入のためスクリプトを作りました。
指定フィールドへ移動 ファイル登録
格納オプション 参照
表示 ファイル名付きのアイコン

ファイル登録フィールドにパスが二つも表示するようになりました。
file:../../仕様書/A仕様書.xlsx
filewin:/C:/Users/12345/Desktop/仕様書/A仕様書.xlsx

フォルダーを見るために、
filewin:/C:/Users/12345/Desktop/仕様書
を使って「ボタンを押す」とフォルダーを開く方法をご指導願います。

#4 2017-01-27 15:36:31

旅人
Member

Re: ファイルパス又はフォルダーパス

「URLを開く」ステップで指定パスは
file://C:/Users/12345/Desktop/仕様書/

Offline

#5 2017-01-27 15:37:35

チポ
Member

Re: ファイルパス又はフォルダーパス

URLを開く

> filewin:/C:/Users/12345/Desktop/仕様書/A仕様書.xlsx
このパスを
  file://C:/Users/12345/Desktop/仕様書
こう変えれば、
そのファイルが入っていたフォルダが開くと思いますよ。

変えるのはテキスト関数で計算出来ますね。

Offline

#6 2017-01-27 15:39:17

チポ
Member

Re: ファイルパス又はフォルダーパス

後塵を拝した!!

気取ってみたけどダメか^^;;;

Offline

#7 2017-01-28 20:52:12

おべんきょっ子
Guest

Re: ファイルパス又はフォルダーパス

ちぽ様
はじめまして、横入りすみません。
おべんきょうのために教えてくださいませ。

>URLを開く
>で
>> filewin:/C:/Users/12345/Desktop/仕様書/A仕様書.xlsx
>このパスを
>file://C:/Users/12345/Desktop/仕様書
>こう変えれば、
>そのファイルが入っていたフォルダが開くと思いますよ。


で、私なりにやってみたのですが、

Let([
#szPath=GetAsText ( オブジェクト );      /*相対パスと絶対パス2行表示*/
#zPath=GetValue ( #szPath ; 2 );          /*絶対パスの選択*/
#hPath=Replace ( #zPath ; 1 ; 8 ; "file:" )   /*うぃんの場合、filewin→file*/
];
LeftWords ( #hPath ; 6 ) & "/"             /*階層増えたらめんどくさいな*/
)

私のやり方ですと、フォルダ階層が増えたら都度LeftWordsの数字を変更しなくては
いけなくなるので、常に「A仕様書.xlsx」の右から2単語数を引くような感じに
出来るのでしょうか。

#8 2017-01-28 22:21:06

Hiro
Member

Re: ファイルパス又はフォルダーパス

Position(テキスト;検索テキスト;先頭文字位置;回数)関数の負の回数利用で、
フォルダ階層数に係らず有効な式、

Let([
   #path=GetValue(GetAsText(オブジェクト);2);          /*絶対ファイルパスの抽出*/
   #pos=Position(#path;"/";Length(#path); -1);          /*逆から数えて1つ目の"/"の位置*/
   #path=Left(#path;#pos);          /*絶対フォルダパスの抽出*/
   #path=Substitute(#path; ["filewin";"file"];["filemac";"file"])          /*fileスキーム変換*/
];
   #path
)


【タイポミス修正報告】
・#pos=Position(#path;"/";1; -1);
                                        ↓
・#pos=Position(#path;"/";Length(#path); -1);

Last edited by Hiro (2017-01-28 23:58:38)

Offline

#9 2017-01-29 07:55:27

おべんきょっ子
Guest

Re: ファイルパス又はフォルダーパス

うわーすごい
Hiroさん、ありがとうございました。

私の頭ではPosition関数の負の回数は出てきませんでした(笑)
そっかぁ、Length関数かぁ・・・。

これが出来たら、
以前Hiroさんが作られたHTAプログラムで
今回のPath階層に新たに任意のフォルダ名を置くことが出来ちゃうのですね。
(https://fm-aid.com/bbs2/viewtopic.php?id=1327)
白地図のようなFile管理で原本と更新フォルダをわけるときに
使えれば・・と思いました。

パスさん、横入りすみませんでした。

#10 2017-01-30 09:17:17

チポ
Member

Re: ファイルパス又はフォルダーパス

>   #path=Substitute(#path; ["filewin";"file"];["filemac";"file"])
  filewin:/ → file://
  filemac:/ → file://
ですね。

Offline

#11 2017-01-30 09:51:21

パス
Guest

Re: ファイルパス又はフォルダーパス

チポ wrote:

URLを開く

> filewin:/C:/Users/12345/Desktop/仕様書/A仕様書.xlsx
このパスを
  file://C:/Users/12345/Desktop/仕様書
こう変えれば、
そのファイルが入っていたフォルダが開くと思いますよ。

変えるのはテキスト関数で計算出来ますね。

Middle ( フォルダまでのパス ; Position ( フォルダまでのパス ; "filewin" ; 1 ;1 ) ; 50 )
で   filewin:/C:/Users/12345/Desktop/仕様書/A仕様書.xlsx   までできましたが、
file://C:/Users/12345/Desktop/仕様書   にする方法が分からず困っています・
尚、 Desktop/仕様書 の部分はファイルにより異なります。
又、容量が多くなりそうなので外付HDを購入し、まとめることも検討しています。
外付HDでもファイルパスによるフォルダーを見ることは可能でしょうか。
以上2件、宜しくお願いします。

#12 2017-01-30 10:33:31

旅人
Member

Re: ファイルパス又はフォルダーパス

Hiroさんとチポさんのを組み合わせると
Let([
   #path=GetValue(GetAsText(オブジェクトフィールド);2);
   #pos=Position(#path;"/";Length(#path); -1);       
   #path=Left(#path;#pos);
   #path=Substitute(#path; ["filewin:";"file:/"];["filemac:";"file:/"])
];
   #path
)
かな?

外付けディスクの場合は
file:///Volumes/HD名/フォルダ名/
の形に変換するといいはず。

Offline

#13 2017-01-30 13:00:13

旅人
Member

Re: ファイルパス又はフォルダーパス

外部保存にしたほうがいいかも知れませんね。
drag&dropもできますし。

Offline

#14 2017-01-30 13:46:05

パス
Guest

Re: ファイルパス又はフォルダーパス

旅人 wrote:

外部保存にしたほうがいいかも知れませんね。
drag&dropもできますし。

大変有難う御座います。
先ほどの計算式でフォルダーまでのパスが取得できました。
スクリプト(URLを開く)でフォルダーを開くことも確認できました。

現在はスクリプト(ファイルを挿入)でオブジェクトフィールドにファイルを保存しています。
デスクトップにファイルがある場合はオブジェクトフィールドにdrag&dropしてもダメですが、外付HDであればこのまま出来るのでしょうか。
外付HDが無いために検証できないので。

#15 2017-01-30 14:36:31

旅人
Member

Re: ファイルパス又はフォルダーパス

外部保存というのは外付HDに保存という意味ではありません。
オブジェクトフィールドのデータの格納オプション項目のことです。

ドラグでの挿入は実体保存なので元ファイルとの関係が切れます。
外部保存はFMが指定された場所(外部格納フォルダ)に実体保存しますが
その場所はFMには分かっているのでリンクは切れません。
でも
>尚、 Desktop/仕様書 の部分はファイルにより異なります。
ということですから、外部保存では無い方がいいのかな?
(外部格納フォルダ内が複数のフォルダや階層構成になっていたら外部保存は
逆に面倒と思うので)
でもでも
GOは全く分かりません!が、現在の参照保存だとGOからはフォルダも仕様書も開けないのでは?
また、今のままの場合でもGOからそのフォルダが開けるのかどうかも私には分かりません。

Offline

#16 2017-01-31 16:24:21

パス
Guest

Re: ファイルパス又はフォルダーパス

旅人 wrote:

外部保存というのは外付HDに保存という意味ではありません。
オブジェクトフィールドのデータの格納オプション項目のことです。

ドラグでの挿入は実体保存なので元ファイルとの関係が切れます。
外部保存はFMが指定された場所(外部格納フォルダ)に実体保存しますが
その場所はFMには分かっているのでリンクは切れません。
でも
>尚、 Desktop/仕様書 の部分はファイルにより異なります。
ということですから、外部保存では無い方がいいのかな?
(外部格納フォルダ内が複数のフォルダや階層構成になっていたら外部保存は
逆に面倒と思うので)
でもでも
GOは全く分かりません!が、現在の参照保存だとGOからはフォルダも仕様書も開けないのでは?
また、今のままの場合でもGOからそのフォルダが開けるのかどうかも私には分かりません。

外部保存では無い方が良いかも知れません。
フォルダは2階層の予定です。
一番上は「ユーザ情報」で、ファイル(EXCEL、PDF、写真など)はその下のフォルダ「A社170120など」に収納します。
年月と共にフォルダが増えていきますが、やりたい事はボタンを押すとフォルダ「A社170120」が開くことで変わりはありません。

データが多いと外付けHDになるかも知れませんし、将来はサーバを導入すると思います。
であれば、パスはユーザ情報までと、A社170120の二つに分ける。
ボタンを押してフォルダ「A社170120」を開くパスは二つのパスを計算式でつなぐ。
この方法であればフォルダ保存先が変更になっても「ユーザ情報」までのパス変更で済みそうです。
この方法は如何でしょうか。

   ユーザ情報・・・・・A社170120
                                A社170121
                                B社170120

#17 2017-01-31 18:42:34

旅人
Member

Re: ファイルパス又はフォルダーパス

参照保存ですから、画像ファイルを入れているフォルダを動かすと
リンクが切れて、オブジェクトフィールドは「見つからないファイル」
になって表示されなくなります。

Offline

#18 2017-02-01 16:03:37

パス
Guest

Re: ファイルパス又はフォルダーパス

旅人 wrote:

参照保存ですから、画像ファイルを入れているフォルダを動かすと
リンクが切れて、オブジェクトフィールドは「見つからないファイル」
になって表示されなくなります。

リンクが切れるとのことなのでURLを開くまでのパスを二つに分けて作るのは如何でしょうか。

「URLを開く」フォルダまでのパスを作成するために
      file://C:/Users/12345/Desktop/ユーザ情報/A社170120/

ファイル「A仕様書.xlsx」を使って取得したパス
      file:../../../ユーザ情報/A社170120/A仕様書.xlsx
      filewin:/C:/Users/12345/Desktop/ユーザ情報/A社170120/A仕様書.xlsx

を元に

フォルダまでのパスAとBを作成し
     フォルダまでのパスAは入力値の自動化で入力           「file://C:/Users/12345/Desktop/」
     フォルダまでのパスBはファイルまでのパスを使って計算式で入力  「ユーザ情報/A社170120/」

フォルダまでのパスA と フォルダまでのパスB を足して 「URLを開く」フォルダまでのパス を作成

この方法であれば外付HDやサーバに移動しても、フォルダまでのパスAの入力値の自動化で入力の値を変更する方法は如何でしょうか。
外付HDやサーバも無いので検証できないのですが。
他方法があれば合わせてご指導願います。

#19 2017-02-01 18:38:15

旅人
Member

Re: ファイルパス又はフォルダーパス

別のいい方法は思い付きませんけど、それでいいのかも。
(仕事でちょっと疲れて・・・)
.xlsxですから画像は元々見えないし関係無いのか。。

Offline

#20 2017-02-06 09:27:23

パス
Guest

Re: ファイルパス又はフォルダーパス

「URLを開く」でフォルダを開く方法で進めたいと思います。
下記パスを元に、一番後ろの/と後ろから二つ目の/の間の「A社170120」を取得するスクリプトを教えて下さい。
色々試しましたが、出来ませんでした。
何度も申し訳ありませんが、お願い致します。

ファイル「A仕様書.xlsx」を使って取得したパス
      file:../../../ユーザ情報/A社170120/A仕様書.xlsx
      filewin:/C:/Users/12345/Desktop/ユーザ情報/A社170120/A仕様書.xlsx

#21 2017-02-06 10:11:48

旅人
Member

Re: ファイルパス又はフォルダーパス

計算フィールドにして
=Let ( 変数= Substitute ( パス ;"/" ; ¶ )  ; GetValue ( 変数 ; PatternCount ( 変数 ; ¶ ) ) )

Offline

#22 2017-02-07 15:29:09

パス
Guest

Re: ファイルパス又はフォルダーパス

旅人 wrote:

計算フィールドにして
=Let ( 変数= Substitute ( パス ;"/" ; ¶ )  ; GetValue ( 変数 ; PatternCount ( 変数 ; ¶ ) ) )

お蔭様で「A社170120」を取得することができました。
これでフォルダまでのパスを設定することができます。
それにしてもフォルダまでのパスを取得する関数があればこの様な回りくどいことをしなくてもと思うのですが。
有難う御座いました。

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.008 seconds, 8 queries executed - Memory usage: 573.38 KiB (Peak: 609.92 KiB) ]