-1

データ範囲が既存の Excel テーブル範囲よりも大きい場合、さまざまなサイズのデータ​​範囲をシートに書き込むと Excel テーブルが削除されるように見えるため、コードを実行するたびに Excel でテーブルを作成したいと考えています。私は現在、テーブルを作成するのにかなり苦労しています。ListObjectを作成しようとするために私が今持っているコード:

eSheets = e.ActiveWorkbook.Sheets;
eSheet = eSheets.get('Item', j);
eSheet.Activate;    
eSheet.Range(horzcat('A1:R',mat2str(size(obj,1)+1))).Select;
eSheet.Listobjects.Add;
eSheet.Listobjects.Item(1).TableStyle = 'TableStyleMedium2';
eSheet.ListObjects.Item(1).Name = tablename;

コメントや提案をいただければ幸いです

4

2 に答える 2

1

投稿が反対票を投じられたので (理由はわかりません...)、いくつかの VBA フォーラムとMATLAB Newsgroupの助けを借りて、私自身の答えを見つけました。問題を抱えている他の人にとって、最終的なコードは次のようになります。

    e = actxserver('Excel.Application');
    ewb = e.Workbooks.Open('Path/to/file');
    eSheets = e.ActiveWorkbook.Sheets;
    eSheet = eSheets.get('Item', j);
    eSheet.Activate;
    range = horzcat('A1:R',mat2str(size(obj,1)+1));
    range_todelete = horzcat('A1:R',mat2str(size(obj,1)+300));
    Range1 = eSheet.get('Range',range_todelete);
    Range1.Value=[];
    eSheet.Range(range).Select;        
    name = 'Table_Name';        
    try eSheet.ListObjects(name).Item(1).Delete
    catch
    end
    eSheet.Listobjects.Add;
    eSheet.ListObjects.Item(1).Name = name;
    eSheet.ListObjects.Item(1).TableStyle = 'TableStyleMedium2';
    Range = eSheet.get('Range',range);
    Range.Value = cellarray;
于 2016-08-16T19:00:24.030 に答える
1

私はmatlabでeSheetを使用することについて知りませんが、関数で

xlswrite(filename,A,sheet,xlRange) 

マトリックスからExcelテーブルにデータを書き込むこともできますhttp://de.mathworks.com/help/matlab/ref/xlswrite.html

[A,B] = xlsfinfo('foofoo.xlsx');
sheetValid = any(strcmp(B, 'foo2'));

https://de.mathworks.com/matlabcentral/answers/25848-how-to-check-existenceに見られるように、古いものを上書きして新しいものを作成しないように、テーブル シートが既に存在するかどうかを確認することもできます。 -Excel ファイル内のワークシート

これがあなたが探しているものかどうかはわかりませんが

于 2016-08-14T01:57:29.640 に答える