6 返信 最新の回答 日時: Jul 26, 2016 8:10 PM ユーザー:monge

    外部プログラム実行の際のEVENT送信の記述について

    monge

      はじめまして。FM 15のユーザです。

       

      OS:Windows 8.1
      FM Pro 15 Advanced

       

      改行付きフィールドをCSVにエキスポートして、それをExcelで活用したいと思っています。
      このフォーラムにも「CSVをエクスポートした際の改行について」の記述がありましたので、
      https://community.filemaker.com/message/258856
      それを参考にさせてもらいましたが、どうも旨く行かず質問いたします。

       

      [EVENT送信]のテキストに、例えば次のように記述すれば旨く改行が変換されます。

      "E:\Data\FileMaker Pro\New2\vt2crlf.exe"  "E:\Data\FileMaker Pro\New2\抽出_備考.csv"

       

      しかし、パス名を変数に代入して、

      $変換ファイルのパス名 & "vt2crlf.exe"  $変換ファイルのパス名 & "抽出_備考.csv"

      cmd.exe /c $変換ファイルのパス名 & "vt2crlf.exe" $変換ファイルのパス名 & "抽出_備考.csv"
      と記述しても旨く変換されません。

       

      変換ファイルのパス名に
        E:/Data/FileMaker Pro/New2/
        E:\Data\FileMaker Pro\New2\
        "E:/Data/FileMaker Pro/New2/"
      などと幾つかのケースを考えてみたのですが、結果は同じでした。

       

      [EVENT送信]に記述する式が間違っているとは思うのですが、どこに間違いがあるのか全く分かりません。
      多分、パス名の記述に間違いがあるような気がしています。

       

      ちなみに、vt2crlf.exeは a-fukutaさん作の改行コード変換ソフトです。
      http://homepage2.nifty.com/a-fukuta/vt2crlf/vt2crlf.html

       

      よろしくお願いいたします。

        • 1. Re: 外部プログラム実行の際のEVENT送信の記述について
          realworks

          検証等はしておらず、見た感じでの回答になりますが、

          "FileMaker Pro"の間のスペースが気になります。

          なくしてみて試した場合どうでしょう?

           

          スペースがなくせない場合は、ダブルクオーテーションの使い方に

          工夫が必要かもしれません。とりあえず。

          • 2. Re: 外部プログラム実行の際のEVENT送信の記述について
            monge

            realworksさん、早速の回答をありがとうございます。

             

            スペースを無くしても結果は同じでした。
            私もダブルクオーテーションの使い方に工夫が必要なのかなと思うのですが、よく分かりません。

             

            何かヒントありませんでしょうか?

            • 3. Re: 外部プログラム実行の際のEVENT送信の記述について
              qbxxdp

              [EVENT送信]の「テキスト」ではなく、「計算式」に記述する必要があります。

               

              パスを記述する場合、「スペース」や「全角」を含む場合は、「"」ダブルクォーテーションで包む必要があるので

               

              "cmd.exe /c \"" & $変換ファイルのパス名 & "vt2crlf.exe\" \""  & $変換ファイルのパス名 & "抽出_備考.csv\""

               

              こんな感じで大丈夫だと思います。

               

              cmd.exe /c は、いらないかも?

              その場合は、

              "\"" & $変換ファイルのパス名 & "vt2crlf.exe\" \""  & $変換ファイルのパス名 & "抽出_備考.csv\""

              • 4. Re: 外部プログラム実行の際のEVENT送信の記述について
                monge

                qbxxdpさん、ありがとうございます。

                 

                最初は全く動かず、ダブルクォーテーションの書き方を、ああでもないこうでもないといじっていたのですが、「テキスト」ではなく「計算式」だったのですね。記述式に気を取られ、気がつきませんでした。

                 

                仰るとおりの記述で、すんなり解決しました。ありがとうございます。

                 

                ただ、このダブルクォーテーションの書き方がイマイチ理解できておりません。
                「\"」「\""」「"\""」などの書き方がありますが、これらの違いは何なんでしょうか?

                 

                ご教授いただければ幸いです。

                 

                よろしくお願いいたします。

                • 5. Re: 外部プログラム実行の際のEVENT送信の記述について
                  qbxxdp

                  「計算式」でダブルクォーテーションを値として記入したい場合、「\」でエスケープする必要が有ります。

                  "\"hello\""

                  こう書くと得られる値は、

                  "hello" になります。

                   

                  その他にダブルクォーテーションで囲みたい場合は、関数「Quote ( テキスト )」を使う方法が有ります。

                  Quote ( "hello" )は、"hello" を返します。

                   

                  "\"" & $変換ファイルのパス名 & "vt2crlf.exe\" \""  & $変換ファイルのパス名 & "抽出_備考.csv\""

                  の場合、

                  Quote ( $変換ファイルのパス名 & "vt2crlf.exe")  & " " & Quote ( $変換ファイルのパス名 & "抽出_備考.csv")

                  こう書くことが出来ます。

                  • 6. Re: 外部プログラム実行の際のEVENT送信の記述について
                    monge

                    qbxxdpさん、ありがとうございます。

                     

                    こういう場合、今までは経験上、
                    "\"" & "hello" & "\""
                    のような書き方をしておりました。非常に無駄な書き方だったんですね。

                     

                    ダブルクォーテーションの使い方には慣れが必要な気がしますが、参考にさせて頂きます。

                     

                    私はむしろ Quote関数を使う方法が分かりやすいです。この方が間違いも少ないような気がします。
                    Quote関数、しっかり頭に入れておきたいと思います。

                     

                    ありがとうございました。