Błąd System.Runtime.InteropServices.COMException (0x800A03EC

0

Wyskakuje mi taki błąd podczas odpalania mojej wersji release w innym katalogu niz ten w kotrym stworzylem aplikacje, pełna tresc to:

System.Runtime.InteropServices.COMException (0x800A03EC): Nie można odnaleźć pliku Zaopatrzenie c. Sprawdź pisownię nazwy pliku i zweryfikuj, czy jego lokalizacja jest poprawna.

Jeśli próbujesz otworzyć plik z listy ostatnio używanych plików, upewnij się, że nazwa pliku nie została zmieniona oraz że plik nie został przeniesiony ani usunięty.
w Microsoft.Office.Interop.Excel.Workbooks.Open(String Filename, Object UpdateLinks, Object ReadOnly, Object Format, Object Password, Object WriteResPassword, Object IgnoreReadOnlyRecommended, Object Origin, Object Delimiter, Object Editable, Object Notify, Object Converter, Object AddToMru, Object Local, Object CorruptLoad)
w Zaopatrzenie.Form1.button1_Click(Object sender, EventArgs e)
w System.Windows.Forms.Control.OnClick(EventArgs e)
w System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
w System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
w System.Windows.Forms.Control.WndProc(Message& m)
w System.Windows.Forms.ButtonBase.WndProc(Message& m)
w System.Windows.Forms.Button.WndProc(Message& m)
w System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
w System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

A pluje sie o ta funkcje:

private void button1_Click(object sender, EventArgs e)
        {
            int oddzial = listBox1.SelectedIndex;
            int miesiac = listBox2.SelectedIndex;
            int ilosc_przedmiotow = 0;

            dane = oddzialy[oddzial] + " - miesiąc " + miesiace[miesiac] + ":\r\n";
            data = new Data();
            data.przedmioty.Clear();
            data.oddzial = oddzialy[oddzial] + " - miesiąc " + miesiace[miesiac];

            //zmienne potrzebne do otworzenia arkusza excel'a
            String path = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase);
            String xlsFile = path+"\\dane\\"+oddzialy[oddzial]+".xls";
            Excel.Application xlsApp;                  // obiekt aplikacji
            Excel.Range xlsRange;              // zakres danych do wczytania
            Excel.Workbook xlsWorkbook;          // dokument
            Excel.Sheets xlsSheets;        // arkusze
            Excel.Worksheet xlsWorksheet;
            System.Object m_xx = System.Type.Missing;
            object missing = System.Reflection.Missing.Value;

            xlsApp = new Excel.Application();

            xlsWorkbook = (Excel.Workbook)xlsApp.Workbooks.Open(xlsFile,
                                                     0,
                                                     true,
                                                     5,
                                                     "",
                                                     "",
                                                     true,
                                                     Excel.XlPlatform.xlWindows,
                                                     "\t",
                                                     false,
                                                     false,
                                                     0,
                                                     true,
                                                     1,
                                                     0);

            ilosc_przedmiotow = xlsWorkbook.Worksheets.Count;

            xlsSheets = xlsWorkbook.Worksheets;

            for (int i = 1; i < ilosc_przedmiotow + 1; i++)
            {
                int j = 3;
                xlsWorksheet = (Excel.Worksheet)xlsSheets.get_Item(i);
                dane += xlsWorksheet.Name + ":\r\n";
                Przedmioty przedmiot = new Przedmioty();
                przedmiot.nazwa = xlsWorksheet.Name + ":";
                data.przedmioty.Add(przedmiot);
                xlsRange = xlsWorksheet.get_Range("A"+j, "N"+j);
                while (true)
                {
                    String kto = "";
                    xlsRange = xlsWorksheet.get_Range("A" + j, "N" + j);
                    try
                    {
                        kto = ((Excel.Range)xlsWorksheet.Cells[j, 2]).Value2.ToString();    //sczytuje wartosc komorki w danym wierszu z danego miesiaca
                    }
                    catch (Exception ee) { break; }
                    String m = "";
                    try
                    {
                        m = ((Excel.Range)xlsWorksheet.Cells[j, miesiac+3]).Value2.ToString();
                    }
                    catch (Exception ee) {}
                    if (m!= "")
                    {
                        
                        dane += "\t-" + kto + " - " + m + "\r\n";
                        przedmiot.komu.Add("-" + kto + " - " + m);
                    }
                    j++;
                }
            }
            //textBox1.Text = path + "\r\n" + xlsFile;
            textBox1.Text = dane;
            textBox1.SelectionStart = textBox1.Text.Length;
            textBox1.ScrollToCaret();
            textBox1.ScrollBars = ScrollBars.Vertical;
            xlsApp.Quit();
        }

Dokladnie to pluje sie o xlsWorkbook = (Excel.Workbook)xlsApp.Workbooks.Open() i nie mam pojecia dlaczego. W katalogu domyslnym dziala i nie rzuca wyjatkow, a tego pliku zaopatrzenie.c nie mam, nie znalazlem go. Pomozcie.

0

Wygląda tak jakby brakowało pliku. Upewnij się, że wszystkie dllki masz w nowym katalogu tak samo sprawdź czy ścieżki do plików Excela są rzeczywiście poprawne.

0

Problemem bylo ze funkcja zle zczytywala mi sciezke do katalogu. A jeszcze ma pytanie, chce odpalic na win 2000 moj program, ale uzywam Microsoft Object Library 12.0 bo nie mam w Add Reference starszej wersji a zdaje mi sie, ze .NET Framework 2.0 nie osluzy mi tego. Jak dodac do projektu starsza wersje tej biblioteki, albo jak zapisac ta biblioteke w release'ie stworzonym w vs 2008? Ja uzywam Office 2007, a na innym kompie jest 2000.

1 użytkowników online, w tym zalogowanych: 0, gości: 1