Laden...

Workbook kann nicht geöffnet werden, wenn über OpenFileDialog Datei zu schnell gewählt?!

Erstellt von kraeppy vor 9 Jahren Letzter Beitrag vor 9 Jahren 2.798 Views
K
kraeppy Themenstarter:in
50 Beiträge seit 2010
vor 9 Jahren
Workbook kann nicht geöffnet werden, wenn über OpenFileDialog Datei zu schnell gewählt?!

guten tag auch 😃

für die folgende problematik habe ich ein video erstellt, das die problematik verdeutlicht.
https://www.youtube.com/watch?v=4CaKrHLzVKo ich habs vorhin erst hochgeladen. kann sein, dass es noch ein paar min benötigt, bis es freigeschaltet ist.

über einen openfiledialog kann eine xls(x)-datei geladen werden. wenn ich die datei "langsam" selektiere, wird die datei problemlos geöffnet.
wenn ich aber die datei sehr schnell wähle, so wird bei dem aufruf

xlapp.Workbooks.Open(......)

die folgende ausnahme ausgegeben: > Fehlermeldung:

Ausnahme von HRESULT: 0x800A03EC.

zu diesen fehler habe ich mich schlau gemacht. es gab u.a. die behauptung, dass der letzte parameter der Open(...)-Anweisung auf true gesetzt werden soll/muss (steht für CorruptLoad). hat bei mir aber keine veränderung bewirkt. die ausnahme bleibt bestehen. erst nachdem ich das programm geschlossen, neu gestartet und die datei wieder langsam auswähle, wird sie eingelesen.

hat jemand von euch eine idee woran das liegen kann?!? bin grad echt planlos :-|

lg

kraeppy

173 Beiträge seit 2009
vor 9 Jahren

Hi,

wenn ich mir das Video so anschaue, dann fällt mir auf, dass die Vorschau im Explorer zum Zeitpunkt des Fehlers noch nicht geladen ist.

Kannst du mal das Vorschaufeature im Explorer abschalten und das ganze nochmal probieren.

Gelöschter Account
vor 9 Jahren

Das lässt sich nur beantworten wenn du uns etwas Code zeigst.

Ich vermute mal:

Das du eine neue Excel.Application Instanz erstellst und danach sofort den Datei-Dialog bemühst. Die Excel Instanz ist aber nach der Erstellung nicht automatisch Ready-to-Use. Die Instanz ist zwar erstellt aber die Anwendung ist immer noch mit dem Startvorgang beschäftigt, und ein Zugriff scheitert jetzt automatisch in dieser Start Phase. Das wirft erstmal die Frage auf wie du diese Excel Instanz erstellst, wie gesagt, um dir zu ernsthaft helfen, brauchst es einen Einblick in deinen Code. (insbesondere wie du die Excel Instanz erstellst)

Also her mit dem Code, ansonsten ist alles nur Rätselraten und Zeitverschwendung 😉

K
kraeppy Themenstarter:in
50 Beiträge seit 2010
vor 9 Jahren

tatsächlich.... wenn ich das vorschaufenster ausschalte, dann habe ich den fehler (bis jetzt) nicht reproduzieren können. falls doch, meld ich mich hier wieder 😃

@ sebastian:
die excel-app wird nur einmal in dem konstruktor der mainform erzeugt.

public mainForm()
{
InitializeComponent();
systemInfo = System.Threading.Thread.CurrentThread.CurrentCulture;
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");

        xlApp = new Excel.Application();  
        xlApp.DisplayAlerts = false;  
        xlApp.Visible = false;  
        Settings.LoadSettings();  
    }  

good day!

kraeppy

173 Beiträge seit 2009
vor 9 Jahren

tatsächlich.... wenn ich das vorschaufenster ausschalte, dann habe ich den fehler (bis jetzt) nicht reproduzieren können. falls doch, meld ich mich hier wieder 😃

Vermutlich sperrt das Vorschaufenster die Datei solange sie sie liest. Daher der Fehler

16.842 Beiträge seit 2008
vor 9 Jahren

Ja das ist auch der Fehler. Passiert auch bei PDF-Dateien etc.

Gelöschter Account
vor 9 Jahren

Ich bin mir nicht sicher ob ich das Problem verstanden habe.
Inwiefern kann jetzt das öffnen von Dateien einer bestimmten Erweiterung diesen Vorgang blockieren? (Ich habe das Youtube Video nicht gesehen da ich kein JavaScript erlaube ohne das Youtube nicht funktioniert)

Ich wäre sehr dankbar wenn jemand das Problem nochmal verständlich zusammenfassen könnte.

16.842 Beiträge seit 2008
vor 9 Jahren

Das Vorschaufenster erzeugt ein Handler; sprich die Datei ist offen / gesperrt / non-shared.
Versuchst Du nun - während das Vorschaufenster aufgebaut wird - darauf zuzugreifen, krachts.
Das ist aber nicht nur hier so, das ist eigentlich bei jeder Datei mit Vorschaufenster, das ein Handle erfordert, so (Excel, Word, PDF, Video..).