Не удается открыть файл Excel
В программе Micrisoft Visual C++ не удается открыть файл Excel.
Проверка существования файла осуществляется успешно, а при попытке открыть файл ошибка.
Привожу текст программы:
// Создаем экземпляр приложения
HRESULT hr = vExcel.CreateInstance( __uuidof( Excel::Application ) );
if( SUCCEEDED(hr) && (vExcel != 0) )
{ // Если экземпляр приложения создать удалось
try
{ // Открываем файл
vBook = vExcel->Workbooks->Open(chShablon);
}
catch( _com_error )
{
vExcel->Quit();
vBook = NULL;
return(false);
}
}
и судя по вашу коду файл на существование вы не проверяете, не выдумывайте, только на наличие рабочей версии экселя есть проверка.
И полагаю такую вещь лучше писать на C#, ибо на Сях это гемморойно:
пример для последней версии excel...
Код:
using Excel = Microsoft.Office.Interop.Excel;
Excel.Application excelApplication = null;
try
{
excelApplication = new Excel.Application();
}
catch(Exception ex)
{
MessageBox.Show("Не удалось запустить Microsoft Excel. Причина: " + ex.Message);
}
finally
{
OpenFileDialog openDialog = new OpenFileDialog();
openDialog.InitialDirectory = Application.StartupPath;
openDialog.Filter = "Excel files(*.xls; *.xlsx)|*.xls;*.xlsx";
if (openDialog.ShowDialog() == DialogResult.OK)
{
Excel.Workbook book = null;
Excel.Worksheet sheet = null;
Excel.Range range = null;
try
{
book = excelApplication.Workbooks.Open(openDialog.FileName, Missing.Value, true, Missing.Value, Missing.Value,
Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value,
Missing.Value, Missing.Value);
excelApplication.Visible = false;
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
sheet = (Excel.Worksheet)book.Worksheets.get_Item(1);
range = sheet.UsedRange;
// тут всякие манипуляции
book.Close(false, Missing.Value, Missing.Value);
excelApplication.Quit();
}
}
Excel.Application excelApplication = null;
try
{
excelApplication = new Excel.Application();
}
catch(Exception ex)
{
MessageBox.Show("Не удалось запустить Microsoft Excel. Причина: " + ex.Message);
}
finally
{
OpenFileDialog openDialog = new OpenFileDialog();
openDialog.InitialDirectory = Application.StartupPath;
openDialog.Filter = "Excel files(*.xls; *.xlsx)|*.xls;*.xlsx";
if (openDialog.ShowDialog() == DialogResult.OK)
{
Excel.Workbook book = null;
Excel.Worksheet sheet = null;
Excel.Range range = null;
try
{
book = excelApplication.Workbooks.Open(openDialog.FileName, Missing.Value, true, Missing.Value, Missing.Value,
Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value,
Missing.Value, Missing.Value);
excelApplication.Visible = false;
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
sheet = (Excel.Worksheet)book.Worksheets.get_Item(1);
range = sheet.UsedRange;
// тут всякие манипуляции
book.Close(false, Missing.Value, Missing.Value);
excelApplication.Quit();
}
}
Код:
vBook = vExcel->Workbooks->Open(chShablon);