GUIでのファイル選択について

GUIでファイルを選択する時に、2回目以降は前回開いたファイルパスのところを開くにはどのようにすればできますか?
下はコードの一部です
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
[FileName1,PathName1] = uigetfile( ...
{ '*.*', '全てのファイル (*.*)'}, ...
'Pick a file','MultiSelect', 'on','C:\');
Bagsheet1 = strcat(PathName1,FileName1);
assignin('base', 'Bsheet1', Bsheet1);
set(handles.edit1,'String',Bsheet1);
1回目の時はC:\のファイル画面が開かれますが、これだと2回目以降も同じになります。
例えば1回目のファイル選択でC:\の開かれたファイルからD:\のファイルで選択した時、2回目のファイル選択画面をD:\になるようにしたいです。
宜しくお願いします。

 채택된 답변

Jiro Doke
Jiro Doke 2019년 2월 26일
편집: Jiro Doke 2019년 2월 26일

1 개 추천

カスタム設定を使って、パラメーターを記憶させるのが良いと思います。
% カスタム設定が定義されているか確認
if ispref('MyPreferences','LastUigetfileFolder')
folder = getpref('MyPreferences','LastUigetfileFolder');
if ~ischar(folder)
folder = 'C:\';
end
else
folder = 'C:\';
end
[FileName1,PathName1] = uigetfile( ...
{ '*.*', '全てのファイル (*.*)'}, ...
'Pick a file','MultiSelect', 'on',folder);
% 選択されたフォルダーをカスタム設定に記憶させる
if ~isnumeric(PathName1)
setpref('MyPreferences','LastUigetfileFolder',PathName1)
end

댓글 수: 4

qrqr
qrqr 2019년 2월 26일
ありがとうございます。
以下のコードで試したところエラーが発生しました。
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
if ispref('MyPreferences','LastUigetfileFolder')
folder = getpref('MyPreferences','LastUigetfileFolder');
else
folder = 'C:\';
end
[FileName1,PathName1] = uigetfile( ...
{ '*.*', '全てのファイル (*.*)'}, ...
'Pick a file','MultiSelect', 'on',folder);
% 選択されたフォルダーをカスタム設定に記憶させる
setpref('MyPreferences','LastUigetfileFolder',PathName1)
csv_gas = strcat(PathName1,FileName1);
assignin('base', 'gas', gas);
set(handles.edit1,'String',gas);
エラー: uigetputfile_helper/checkString (line 362)
Filename は文字列でなければなりません。
エラー: uigetputfile_helper/parseArguments (line 157)
defaultfilepath = checkString(defaultfile, 'Filename');
エラー: uigetputfile_helper (line 27)
[dialog_filter, dialog_title, dialog_filename, dialog_pathname,
dialog_multiselect] = parseArguments();
エラー: uigetfile (line 127)
[filename, pathname, filterindex] = uigetputfile_helper(0, varargin{:});
エラー: csvtxt_file_read>pushbutton1_Callback (line 89)
[FileName1,PathName1] = uigetfile( ...
エラー: gui_mainfcn (line 96)
feval(varargin{:});
エラー: csvtxt_file_read (line 42)
gui_mainfcn(gui_State, varargin{:});
エラー:
@(hObject,eventdata)csvtxt_file_read('pushbutton1_Callback',hObject,eventdata,guidata(hObject))
Error while evaluating uicontrol Callback
Jiro Doke
Jiro Doke 2019년 2월 26일
もしかして uigetfile でキャンセルボタンとか押されたでしょうか。
エラーチェックを追加しまして上のコードを修正したので、もう一度この回答のコードを試してみてください。
qrqr
qrqr 2019년 2월 26일
[もしかして uigetfile でキャンセルボタンとか押されたでしょうか。]
→  キャンセルボタン押しました。
修正頂いたコードで試したらできました。(キャンセルボタン押してもエラーは起こりませんでした)
とても助かりました。ありがとうございます。
Jiro Doke
Jiro Doke 2019년 2월 26일
解決できてよかったです!
因みに、キャンセルボタンを押した場合フォルダー名はキャンセルされたという事を示すために数字の0として戻ってきます。その数字が誤って次回のフォルダー名として使われていたのが原因です。修正後のコードでは数字として戻ってきた場合はフォルダーを記憶しないようなエラーチェックを加えてあります。

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 環境と設定에 대해 자세히 알아보기

제품

릴리스

R2013b

질문:

2019년 2월 26일

편집:

2019년 9월 27일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!