Ich habe folgendes Problem: Ich speichere Daten in eine Excel-Datei folgendermaßen ab:
Code:
DefaultName = [num2str(k),'_Sim_N_',num2str(N)];
[FileName,PathName]=uiputfile('*.xls','EXCEL-Datei speichern',DefaultName);
if FileName~=0% Nur wenn ein file ausgewählt wurde
FilePath=fullfile(PathName,FileName);
xlswrite(FilePath,[handles.t,handles.SEc,handles.SEb,handles.SQc,handles.SQb,
handles.strom,handles.fluor]);
Das Problem ist, wenn man Daten in ein schon vorhandenes EXCEL-file speichert und die neuen Daten sind weniger, als in der schon bereits vorhanden Datei, (haben also weniger Zeilen oder auch Spalten), so werden die alten Daten in den überzähligen Feldern nicht gelöscht.
Ich fasse die Frage mal zusammen:
Wie kann man eine gesamte Spalte in einem Excel-Sheet löschen?
Mit diesem Ansatz kann man leicht Lösungen finden, wenn man seine Lieblings-Internet-Suchmaschine fragt: "Matlab delete column in Excel sheet".
So ein Forum ist prima, aber bereits vorhandene Lösungen zu nutzen ist immer effizienter als eine neue zu erstellen.
Bin ich in der Zeile mit : worksheets.Item(h1).Delete;
Im debug-Modus angekommen so kommt diese fehlermeldung:
Zitat:
Error using
Interface.Microsoft_Excel_15.0_Object_Library._Worksheet/Delete
Invoke Error, Dispatch Exception:
Source: Microsoft Excel
Description: Die Arbeitsmappe muss mindestens ein sichtbares
Arbeitsblatt enthalten.
Um das ausgewählte Blatt (oder Blätter) auszublenden, zu löschen
oder zu verschieben, müssen Sie zuerst ein neues Blatt einfügen
oder ein ausgeblendetes Blatt wieder einblenden.
Help File: xlmain11.chm
Help Context ID: 0
Error in Simulation_V22A>close_Callback (line 558)
worksheets.Item(h1).Delete;
Error in gui_mainfcn (line 96)
feval(varargin{:});
Error in Simulation_V22A (line 42)
gui_mainfcn(gui_State, varargin{:});
Error in
@(hObject,eventdata)Simulation_V22A('close_Callback',hObject,eventdata,guidata(hObject))
Error using waitfor
Error while evaluating uicontrol Callback
die Fehlermeldung ist doch an sich recht klar?
Anscheinend würde der Code alle Tabellenblätter löschen. Um das letzte der anderen Tabellenblätter zu löschen, musst du aber wohl erst ein neues anlegen.
Ich komm einfach nicht weiter....
Brauch dringend Hilfe, ich glaub mein Code vorher war falsch dieser löscht ja nur die leeren Blätter, aber ich möchte ja den inhalt des vorhandenen excel sheet löschen und wieder beschreiben
%Alle Zellen wählen und löschen
range = get(xworksheets.Item(h2),'Range','A1','IV65536');
set(range, 'Value',{''});
catch
%Warnung, falls "xsheet" nicht gefunden wird
warndlg(['Achtung: Blatt "' xsheet '" nicht gefunden!'],'Fehler');
%Schließe Excel-File
xworkbook.Save;
xworkbook.Close(false);
xobject.Quit;
delete(xobject);
end if FileName~=0% Nur wenn ein file ausgewählt wurde
FilePath=fullfile(PathName,FileName);
ifget(handles.checkbox2,'Value')==true% wenn "mit glatter Kurve" ausgewählt ist xlswrite(FilePath,[handles.t,handles.SEc,handles.SEb,handles.SQc,handles.SQb,handles.strom,handles.fluor]);
else xlswrite(FilePath,[handles.t,handles.SEc,handles.SEb,handles.SQc,handles.SQb]);
end end end
Die Excel-Datein waren ewig nicht geöffnet, auch im Task Manager nicht zu sehen, aber nach einem Neustart des Rechners, hat alles funktioniert.
Danke nochmal
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.