Q5-1:ファイル選択コンポーネントを利用したファイル選択ダイアログについて、ネットワークサーバー上のパスをメソッド固定値に設定するなどして、ボタンアクションにより、その「フォルダ」を開くような方法はありますでしょうか。同じく、ボタン一つで、あらかじめ指定したExcelやWord「ファイル」を開く方法は、外部プログラム通信のみでしょうか。 (チュートリアルではGIFなど画像のみの説明でしたが、どうでしょうか)
A5-1:
@デフォルトのディレクトリを指定するには、[ファイル選択ダイアログ]のメソッド「カレントディレクトリを設定する(String)」の引数に固定値でパスを入れてみてください。
> 同じく、ボタン一つで、あらかじめ指定したExcelやWord「ファイル」を開く方法は、外部プログラム通信のみでしょうか。 (チュートリアルではGIFなど画像のみの説明でしたが、どうでしょうか)
EXCELやWordなどのファイルをOffcieアプリケーションから開く際にはメソッド「標準のアプリケーションファイルで開く(File)」が便利です。
固定値でファイルまでのパス、または[ファイル選択ダイアログ]のイベント内包・イベント対象データなどを引数に指定して下さい。
Windows上で「ファイルの関連付け」がされているアプリケーションで開かれます。
Lesson12の例では[画像ファイル入力]を使って読み込み、[イメージビューワー]に設定していて、MZPlatform上にデータがあります。
[外部プログラム通信]ではMZPlatform以外のアプリケーションを起動するという違いがあります。
画像ファイルでも上記メソッド「標準のアプリケーションでファイルで開く(File)」で画像を開くことができます。各PCの設定に従ってWindowsMediaPlayerなど意図しないアプリケーションで開くことがありますので、適宜使い分けて下さい。
なおパスの中に全角スペースが入っていると、Windowsの制約上パスが上手く認識されない現象が確認されていますので、ご注意下さい。
Q5-2:
>なおパスの中に全角スペースが入っていると、Windowsの制約上パスが上手く認識されない現象が確認されていますので、ご注意下さい。
こちらですが、半角スペースはどうでしょうか。
と言いますのも、実際にパスの中に半角スペースが入力されている場合、
「○○.txtに関連づけられたプログラムを起動できません.
[外部プログラム通信[ID:○○](KEY:外部プログラム通信○○)]
標準のアプリケーションでファイルを開く()」
とのエラーが発生しました。
半角スペースがない状態ですと、正常にファイルを表示できます。
それとも、フォントの設定など、他の要因でしょうか。
A5-2:
お知らせ頂いたエラーメッセージから、ファイル名ないしパスが途中からスペースによって分割されて認識され、該当ファイルが見当たらない状態になっていると考えられます。
現在のところ半角スペースが入っていてのエラー報告はございません。
手元のPCで試してみましたが「新規пппファイル.txt」というように半角スペースを3つ入れても認識されました。
もう少し環境による違いなどでエラーが発生するか調べてみますが、実は半角だと思っていたが全角だった、ということはないでしょうか。
また、ファイル名表示用のフォントをデフォルトから変更したなど何かお気付きの点がございましたら、ご連絡頂ければ幸いです。
Q5-3:
本件ですが、指定しているパスは下記になります。
(下記はコピーして貼り付けています)
\\technoafs1\Unbackup_Folders\TECHS\Public\1_事業部管理\03 TL 製品会議 議事録
このフォルダの直下に存在するファイルを開こうとすると、エラーが発生します。
「1_事業部管理」の直下に存在するファイルは、問題ありません。(いずれもファイル名にスペースは入っていません)
コンポーネントは下記のようにしております。
参照ボタン-------------------ファイル選択
| (単数Open用ファイル選択ダイアログを表示)
| 引数:固定値 メソッド:入力なし
|
|-----------ファイル選択(上記と同じID)
カレントディレクトリを設定(String)
メソッド:テキストフィールド:テキスト取得
ファイル選択-----------------外部プログラム通信
標準のアプリケーションでファイルを開く
(File)
イベント内包:イベント対象データ
イベント1
テキストフィールドは、「\」を表示する為に、フォントをMSゴシックに変えておりますが、初期状態である、Dialogに戻しても、同様にエラーが生じました。
データベース上のデータ型は、varcharです。
このような半角スペースのフォルダはいくつかありますが、それらが絡むと、どれも同じ状態となります。
A5-3:
確かにネットワーク上のフォルダでは半角であってもスペースが入っていると認識されないということが確認できました。ご連絡ありがとうございます。
半角スペースの有無がローカルドライブでは問題が無く、ネットワーク上でのパスを探す際に問題があるのは、よりOSのファイルシステムに近いところで問題が発生しているためと考えられます。
色々試してみましたが、簡単な回避方法はございません。例えばネットワーク上でも良いので一時フォルダを作り、[ファイル]コンポーネントを使って該当のファイルを一時フォルダにコピーして、それを[外部プログラム通信]で開き、MZPlatform終了時に[ファイル]コンポーネントで削除するといったことが考えられます。
スペースを含まない方が望ましいですが、フォルダ名の変更が難しいようでしたら、上記の方法をご紹介しますので、再度ご連絡頂ければ幸いです。
どうぞよろしくお願い申し上げます。
ご連絡:
フォルダ名を変更する方向で社内調整致します。
Q5-4:
弊社のファイルサーバーのフォルダ名がスペースを含んでいるものがかなり多く、フォルダ名の修正が現実的ではない事がわかりました。内容について、詳しく教えて頂けますでしょうか。
また、弊社開発のソフトでは、パスをダブルコーテーションで囲い、それを処理実行時に受け渡す事によって、パス内にスペースが存在しても対処できるようにしております。
もし、こういった修正が次バージョンアップ時に可能なようであれば、ファイル参照は現在開発中のアプリケーションに必ずしも必要なものではありませんので、複雑な処理を作成するより、それまで待たせて頂きたいのですが、どうでしょうか。
A5-4:
大変申し訳ございませんが、ネットワーク上のパスが上手く渡らない現象は、javaのバグに起因するため、現在のところ修正が難しい状態です。
回避策として以下の2つが考えられます。
1)目的のフォルダーが存在する親フォルダにネットワークドライブを割り当てる。ネットワークドライブでは半角スペースが入っているフォルダでも問題は発生しません。
2)一時的に目的のファイルを別なフォルダにコピーし、起動。終了後一時ファイルは削除する。
関連ファイル「一時ファイルtest.mzax」をご覧下さい。
ご検討頂き、ご不明な点、ご要望等ございましたら、再度ご連絡頂ければ幸いです。どうぞよろしくお願い申し上げます。
関連ファイル:一時ファイルtest.mzax