Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

поиск ячеек по excel файлам [D6, WinXP]


Страницы:   1 2 3

kate158 ©   (2009-09-22 16:03:00) 

что делаю:1.ищу excel файлы в папке (их названия у меня в мемо).2.нахожу опр ячейку по всем эксель файлам(ее адрес введен на форме в эдит поле).3. копирую название файла и значение ячейкив блокнот. вопрос таков. что неверно написано в коде (поиск ячейки по всем  файлам):

procedure TForm1.Button3Click(Sender: TObject);
var
 D1, D2 : Variant;
 E, W, SB,SH : Variant;
 i:integer;
BEGIN
   E  := CreateOleObject('Excel.Application');
     E.DisplayAlerts  := False;
     for i:=0 to Memo1.Lines.Count - 1 do
     E.WorkBooks.Open(trim(Memo1.Lines[i]), ReadOnly:=True);
     W := E.WorkBooks.Item[1];
     SH := W.Sheets.Item[1];
        D1 :=  SH.Range[EditAA.Text].Value;
        i:=i+1;
           showmessage(d1);
           //E.Visible:=true;
              e.WorkBooks.close;
  Application.ProcessMessages;
end;

цикл по файлам работает, на данным из ячейки нет..не могу догнать в чем ошибка


kate158   (2009-09-23 09:31:00) [21]

кто говорил про проблемы?
ответ на 17 и 18 посты
уже программлю спасибо


Сергей М.   (2009-09-23 09:27:00) [22]


> kate158 ©   (23.09.09 09:24) [23]


Ценнейшее уточнение)

Ну а проблемы-то в чем заключаются ?


kate158   (2009-09-23 09:24:00) [23]

в зависимости от того, скока ячеек выбрал пользователь.
если D1,G5, то
c:\path1\file1.xls "Значение ячейки D1" "Значение ячейки G5"
c:\path1\file2.xls "Значение ячейки D1" "Значение ячейки G5"
...
если D1:D5, то
c:\path1\file1.xls "Значение ячейки D1" "Значение ячейки D2" "Значение ячейки D3" "Значение ячейки D4" "Значение ячейки D5"
c:\path1\file2.xls "Значение ячейки D1" "Значение ячейки D2" "Значение ячейки D3" "Значение ячейки D4" "Значение ячейки D5"
...
если D1 то
c:\path1\file1.xls "Значение ячейки D1"
c:\path1\file2.xls "Значение ячейки D1"
...


Сергей М.   (2009-09-23 09:22:00) [24]

Ну и какие проблемы ?


kate158   (2009-09-23 09:20:00) [25]

c:\path1\file1.xls "Значение ячейки D5" "Значение ячейки H6" "Значение ячейки G8"
c:\path2\file2.xls "Значение ячейки D5" "Значение ячейки H6" "Значение ячейки G8"


Сергей М.   (2009-09-23 09:12:00) [26]

Т.е. в результате требуется получить

c:\path1\file1.xls "Значение ячейки D5" "Значение ячейки H6" "Значение ячейки G8"
c:\path2\file2.xls "Значение ячейки D5" "Значение ячейки H6" "Значение ячейки G8"

или

c:\path1\file1.xls "Значение ячейки D5"
c:\path1\file1.xls "Значение ячейки H6"
c:\path1\file1.xls "Значение ячейки G8"
c:\path2\file2.xls "Значение ячейки D5"
c:\path2\file2.xls "Значение ячейки H6"
c:\path2\file2.xls "Значение ячейки G8"

?


kate158   (2009-09-23 09:04:00) [27]

объясняю. программа будет выцеплять из excel файлов ячейчки, ктр укажет пользователь и добавлять информацию в виде "название excel файла" + "значение выбранной ячейки (ячеек)" в блокнот


Сергей М.   (2009-09-22 19:12:00) [28]


> мне надо не одну


Если "не одну", то что тогда ты собрался записывать в Блокнот ? И в каком виде ?


Thrashead   (2009-09-22 18:07:00) [29]

Replace( где менять, что менять, на что менять );

ps. что за программа будет в итоге?


Thrashead   (2009-09-22 18:05:00) [30]

русские буквы:
1) строку в верхний регистр;
2) если подстрока содержит символы ascii 48..57 или 65..90, то всё норм, иначе - в топку такую подстроку.

лишние пробелы:
написать доп.функцию для замены строки1 на строку2, например:
Replace(' ','');
заменить пробел на пустую строку.


kate158   (2009-09-22 17:55:00) [31]

самое интересное - 3)
+ пользователь вводит русские буквы
+ лишние пробелы...


Thrashead   (2009-09-22 17:45:00) [32]

1) если в строке нет запятых и двоеточий, то обращаемся к ячейке, полагая, что введён корректный адрес;
2) если нет запятых, но есть одно двоеточие, то обращаемся к Range, полагая, что введён корректный диапазон;
3) если нет двоеточий, но есть запятая (-ые), то разбиваем на подстроки, и далее в цикле обрабатываем указанные ячейки.
хмм...


Thrashead   (2009-09-22 17:41:00) [33]

:)
становится интереснее


kate158   (2009-09-22 17:38:00) [34]

сорри..
мне надо не одну..
пользователь может ввести как D1, как d1:d5, как d1,g5,h6....


Сергей М.   (2009-09-22 17:36:00) [35]


> Thrashead   (22.09.09 17:34) [10]


Обработка OnChange + перехват операции вставки текста в Edit-контрол из буфера обмена


Thrashead   (2009-09-22 17:34:00) [36]

Сергей:
и как этот ввод запретить? адрес ячейки ведь до IV65536. Маску делать?
Может
try ... except
?


Сергей М.   (2009-09-22 17:31:00) [37]


> Через Range можно обратиться и к одной ячейке


Ему к одной и надо
См.

> нахожу опр ячейк у


А юзер, зараза, взял да и ввел не одну)


Thrashead   (2009-09-22 17:29:00) [38]

хмм...
Через Range можно обратиться и к одной ячейке:
SomeValue:=WorkSheet.Range['A1'].Value;

http://msdn.microsoft.com/en-us/library/microsoft.office.tools.excel.worksheet.range(VS.80).aspx


Сергей М.   (2009-09-22 17:29:00) [39]

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


kate158   (2009-09-22 17:27:00) [40]

что делать если пользователь в эдит добавил адрес не одной ячейки? например d5,H6,g8?


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо