2

重複の可能性:
Excel アドイン エラー #NAME?

これは、以前に報告した Excel のユーザー定義関数に関する問題のフォローアップ クエリだと思います。

手動で使用するとExcelで関数を使用できますが、xlswriteを使用してMatlabを使用してExcelファイルに書き込むと、エラーが発生します#NAME?

機能を手動で使用する

手動で入力したときと、Matlab を介して関数を使用したときの両方のスクリーンショットを添付しています。

Matlab で xlswrite を使用する

ありがとう

編集 :

どうもありがとう。ここにVBA関数をExcelアドインとして保存しました:

C:\Users\Administrator\AppData\Roaming\Microsoft\Addins

以下は、Automation で使用したときに読み込まれない Excel アドインについて私が見たものです。

http://www.excelforum.com/excel-programming/472145-calling-excel-macro-from-vb-6-app-problem.html

ここに chi_squared() のコードの小さなスニペットを添付します。

Function Chi_Squared(act, exp, Optional df)

これは、Matlab で Excel ファイルに書き込む方法です。

Formula_chisqr={[ '=chi_squared(' 'O2:O22' ',' 'M2:22' ')']};

[ステータス、メッセージ] = xlswrite1(ExcelFilename,Formula_chisqr,sheetname, Location_Agg);

また、提案されているように完全なパスを指定してみました。しかし、うまくいきませんでした。

ありがとう

4

2 に答える 2

1

UDF が定義されているワークブックを指定する必要があります。あなたの機能があなたの PERSONAL.XLSB ファイルであっても。UDF を使用するのと同じファイルで UDF が定義されている場合にのみ、これを行う必要はありません。

例えば、

='myFunctions.xlsb'!chi_squired(O2:O21,P2:P21)

が開かれていない場合myFunctions.xlsbは、ファイルへのフル パスを指定する必要がある場合があります。

ファイル名を指定せずに任意のファイルで UDF を呼び出せるようにする場合は、ファイルをアドインとして保存してから、 で有効にする必要がありますOptions - Add-ins - Manage Add-ins


別のアイデア: XLSWRITE を使用する場合は、拡張子 XLSX をファイル名に付けtest.xlsxますtest。既定では、MATLAB はファイルをXLS拡張子付きで古い形式で保存します。このようなファイルを新しいバージョンの Excel (2007/2010) で開くと、互換モードではマクロや UDF を実行できないようです。

于 2012-04-28T18:23:10.917 に答える
1

Excel を COM サーバーとして開いた場合、デフォルトでは UDF とアドインはロードされません。そのため、Excel ファイルでアドインを使用する場合は、最初にアドインをロードする必要があります。

Excel ファイルを開く前にアドインをロードする Matlab の小さなコード スニペットを次に示します。

Excel = actxserver ('Excel.Application'); 
Excel.Workbooks.Open('C:\YourAddInFolder\AddInNameWithExtension'); 
Excel.Workbooks.Item('AddInNameWithExtension').RunAutoMacros(1); 

File='C:\YourFileFolder\FileName'; 
if ~exist(File,'file') 
    ExcelWorkbook = Excel.Workbooks.Add; 
    ExcelWorkbook.SaveAs(File,1); 
    ExcelWorkbook.Close(false); 

end 
Excel.Workbooks.Open(File); 

出典: マスワークス

于 2012-04-29T04:58:51.143 に答える