2017-07-28 78 views
0

我試圖打開位於使用函數xlswritefig的網絡路徑上的工作簿。即該路徑不以傳統字母C:\開頭。相反,它看起來如下:網絡路徑無法在Matlab中使用xlswritefig

\\networkmain\folder\to 

當我嘗試打開該文件夾在Matlab上的Excel文件,我注意到,Excel將當前路徑在路徑的前面。即如果我在文件夾 Ç我目前:\ Matlab的\ Excel稍後嘗試打開:

C:\Matlab\networkmain\folder\to 

我怎樣才能防止這種情況發生,並重定向到網絡路徑?

+0

那麼你遇到這個問題時你打電話的實際代碼行是什麼? – Wolfie

+0

'xlswritefig(hFig,'\\ networkmain \ folder \ to',sheetname,xlcell)' – JohnAndrews

+0

謝謝,我認爲現在更清晰了。考慮向文件交換中的相關頁面添加註釋,以便作者知道這是一個可能導致意外行爲的問題。 – Wolfie

回答

2

問題出在功能xlswritefig。爲了解決此問題,步入功能和改變的代碼下面的行(行86):

%**op = invoke(Excel.Workbooks, 'open', [pwd filesep filename]); 
op = invoke(Excel.Workbooks, 'open', filename); 

因此除去[pwd filesep]一部分。

1

我不認爲在Matlab中支持UNC路徑(至少沒有用到)。最簡單的方法是將您的文件夾映射到一個字母驅動器。可以在Windows資源管理器中執行此操作,但我傾向於在命令提示符下使用net usenet help use將顯示語法

+0

謝謝,但對我無用,因爲我確實需要使用網絡路徑。每臺用戶在此計算機上指向此網絡路徑的信件都不相同。 – JohnAndrews

+0

我注意到UNC路徑可以很好的與其他Matlab函數一起使用。它只有在與Excel結合使用時纔會中斷。 – JohnAndrews

+0

字母驅動器從來都不好。 Matlab不是我的特長。如果你沒有在Matlab中解決它,我建議一個外部腳本,將數據複製到本地臨時文件夾,從Matlab內部調用 – Sam

1

MATLAB不支持UNC(網絡)路徑。但是,這是一種解決方法,它使用system命令設置(並取消設置)網絡驅動器號。

% Execute system command to assign drive letter 
system('net use Z: \\networkmain\folder\to'); 
% Perform actions under this drive 
cd(Z:\); 
% ... 
% Unmount the drive 
system('net use Z: /delete'); 

您可以使用一些簡單的循環來查找下一個可用的驅動器號,因爲系統調用不應覆蓋現有的驅動器號。

+0

謝謝。良好的workarround。但是,在函數本身中找到了解決方案,它將添加完整路徑,如下所示:'[pwd filesep filename]'。我用文件名替換了這個。 – JohnAndrews

+1

所以這是一個文件交換功能的問題?考慮加入你自己的答案強調這一點 - 因爲該功能甚至不是你的問題的焦點,所以未來的用戶可能會認爲這是一個更通用的問題。 – Wolfie