Как получить последнюю активную ячейку в Excel 2007

StackOverflow https://stackoverflow.com/questions/616936

  •  03-07-2019
  •  | 
  •  

Вопрос

Я работаю с неуправляемым C ++ и Excel 2007. Я использую вызов Excel4 API, чтобы получить диапазон ячеек, выбранных пользователем.

Когда пользователь выбирает то, что я называю "общим" range, этот вызов возвращает такой диапазон, как этот «R1C1: R4C3», который является именно тем форматом, который мне нужен для выполнения других операций в моем приложении.

Однако, когда пользователь решает выбрать целые столбцы, этот вызов API возвращает диапазон только со столбцами, что-то вроде этого "C1: C3", что, конечно, является допустимым диапазоном Excel, но для меня это означает, что я нужно изменить его так, чтобы он выглядел как диапазон выше; другими словами, я должен вручную добавить диапазон строк.

Поэтому я беру этот диапазон "C1C3" и измените его на «R1C1: R65534C3».

Возможно, в этот момент вы уже заметили мою проблему, так как вы можете видеть, что я жестко кодирую диапазон строк, чтобы быть максимальным количеством строк, поддерживаемых Excel 2003 (приложение также работает с этой версией Excel).

Это, конечно, не то, что я ищу, потому что как только я получаю выбранный диапазон, я читаю информацию в этом диапазоне и использую эту информацию, чтобы сделать запрос к серверу, поэтому представьте, что пользователь только вводил данные до строки 534, и все равно в моем запросе будет 65000 строк без данных.

Итак, мой вопрос: как я могу получить последнюю ячейку, в которую пользователь ввел данные, я думаю, что она называется последней активной ячейкой, поэтому я могу ограничить свой диапазон до этой строки и, пожалуйста, помните, что я работаю с неуправляемой код.

Это было полезно?

Решение

Excel 4 API? Действительно?

Существует команда xlcSelectEnd, которую можно использовать для перехода к последней ячейке с текстом, введенным в нее в любом направлении от данной ячейки.

Другие советы

Попробуйте привести range.selection к объекту Range.

регион Получить последнюю использованную строку

     Excel.ApplicationClass app = new Excel.ApplicationClass();
        Excel.Workbook workBook = app.Workbooks.Open(_PathFile,
                 System.Reflection.Missing.Value,
                 System.Reflection.Missing.Value,
                 System.Reflection.Missing.Value,
                 System.Reflection.Missing.Value,
                 System.Reflection.Missing.Value,
                 System.Reflection.Missing.Value,
                 System.Reflection.Missing.Value,
                 System.Reflection.Missing.Value,
                 System.Reflection.Missing.Value,
                 System.Reflection.Missing.Value,
                 System.Reflection.Missing.Value,
                 System.Reflection.Missing.Value,
                 System.Reflection.Missing.Value,
                 System.Reflection.Missing.Value);
        // Get the active worksheet using sheet name or active sheet
        Excel.Worksheet workSheet = (Excel.Worksheet)workBook.ActiveSheet;
        // Find the last real row
        int _InLastRow = workSheet.Cells.Find("*",System.Reflection.Missing.Value,
            System.Reflection.Missing.Value, System.Reflection.Missing.Value, Excel.XlSearchOrder.xlByRows,Excel.XlSearchDirection.xlPrevious, false,System.Reflection.Missing.Value,System.Reflection.Missing.Value).Row;
#endregion
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top