Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Конец файла Excel / 20 сообщений из 20, страница 1 из 1
03.12.2009, 15:58
    #36346356
Lexx_SQL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конец файла Excel
Добрый день!
Подскажите, пожалуйста, по какому условию организовать цикл чтения файла Ексел.... или как определить конец файла.
Спасибо.
...
Рейтинг: 0 / 0
03.12.2009, 16:14
    #36346417
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конец файла Excel
Lexx_SQL,

Может вы расскажете, как его читаете? А то опять штатный запрос к экстрасенсам.


Попробуйте функцию EOF

Попробуйте ActiveSheet.Cells.SpecialCells(xlLastCell).Row

Попробуйте определить визуально
...
Рейтинг: 0 / 0
03.12.2009, 16:17
    #36346434
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конец файла Excel
Не совсем понятно, что требуется. Может так (по активному листу):
Код: plaintext
1.
2.
3.
4.
5.
Sub tt()
For Each cc In UsedRange.Cells
cc.Select
Next
End Sub
...
Рейтинг: 0 / 0
03.12.2009, 16:54
    #36346566
Core12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конец файла Excel
Если вы читаете из файла например в какой нить listview тогда вам точно нужен eof. А если по другому смотрите посты предыдущих участников.
...
Рейтинг: 0 / 0
03.12.2009, 16:58
    #36346582
Lexx_SQL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конец файла Excel
Нужно огранизовать цикл по файлу Ексель типа "пока не конец файла"

Set xlApp = CreateObject("Excel.Application")
Set xlWb = xlApp.Workbooks.Open(Path)
Set xlWs = xlWb.Worksheets(1)
Do While ......????
xlWs.Cells(i, s).Value = CoderENG(xlWs.Cells(i, s))
i = i + 1
Loop

На EOF и xlApp.Application.ActiveSheet.Cells.SpecialCells(xlLastCell).Row..ругается
...
Рейтинг: 0 / 0
03.12.2009, 17:05
    #36346607
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конец файла Excel
Lexx_SQLНужно огранизовать цикл по файлу Ексель типа "пока не конец файла"

Set xlApp = CreateObject("Excel.Application")
Set xlWb = xlApp.Workbooks.Open(Path)
Set xlWs = xlWb.Worksheets(1)
Do While ......????
xlWs.Cells(i, s).Value = CoderENG(xlWs.Cells(i, s))
i = i + 1
Loop

На EOF и xlApp.Application.ActiveSheet.Cells.SpecialCells(xlLastCell).Row..ругается

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

И еще. Судя по вашему посту, вам нужен не КОНЕЦ ФАЙЛА, а конец то ли данных, то ли листа. Каково условие прекращения просмотра? Может достаточно проверить на пустоту какую-то ячейку?
...
Рейтинг: 0 / 0
03.12.2009, 17:12
    #36346622
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конец файла Excel
А так? Проверил, работает.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Sub tt()
s =  1 

Set xlApp = CreateObject("Excel.Application")
Set xlWb = xlApp.Workbooks.Open("c:\test.xls")
Set xlWs = xlWb.Worksheets( 1 )

With xlWs.UsedRange
For Each cc In .Columns(s).Cells
 xlWs.Cells(cc.Row, s).Value = CoderENG(xlWs.Cells(cc.Row, s))
Next
End With
End Sub
...
Рейтинг: 0 / 0
03.12.2009, 17:22
    #36346656
Lexx_SQL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конец файла Excel
извиняюсь...

в наборе данных встречаются пустые ячейки....а это:
xlWs.Cells(i, s).Value="" или
isEmpty(xlWs.Cells(i, s).Value)=true
Поэтому анализ на "пустоту" результатов не даёт.
Как бы узнать где конечная строка или сколько строк в наборе?
Спасибо.
...
Рейтинг: 0 / 0
03.12.2009, 17:29
    #36346678
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конец файла Excel
Lexx_SQLсколько строк в наборе?

А те несколько вариантов, которые вам дали не подходят?

Что вы подразумеваете под НАБОРОМ.?
...
Рейтинг: 0 / 0
03.12.2009, 17:33
    #36346695
Lexx_SQL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конец файла Excel
Hugo121, Спасибо.
Ваш ответ помог...
...
Рейтинг: 0 / 0
03.12.2009, 17:50
    #36346742
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конец файла Excel
Если кто будет тестить - не забудьте в конце кода
Код: plaintext
1.
xlWb.Close
А то потом замучаетесь экселей убивать :)
...
Рейтинг: 0 / 0
03.12.2009, 18:21
    #36346839
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конец файла Excel
> Автор: Hugo121
> А то потом замучаетесь экселей убивать :)

Тогда уж и
Код: plaintext
xlApp.Quit
нужно не забыть

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
03.12.2009, 18:27
    #36346860
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конец файла Excel
Как-то у меня и без quit закрылось.... Наверное потому, что только один файл в этом экселе открывал.
Ну там наверное ещё и Nothing'ов по правилам ставить надо...
...
Рейтинг: 0 / 0
04.12.2009, 22:38
    #36349530
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конец файла Excel
Самый верный способ ответить на почти любой вопрос с Excel: написать макрос и перерисовать его внеся необх. здравые изменения.
...
Рейтинг: 0 / 0
17.03.2010, 13:25
    #36525995
bookreader
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конец файла Excel
Я думаю, Вам будет интересен прикреплённый файл.
Для работы программы необходимо создать файл hello.xlsx и заполнить его содержимым. Например,
A1 = 1, A2 = 2, B1 = 3, B2 = 4 (где, например, для A1: A - номер столбца, а 1 - номер строки листа). В этот же файл, после выполнения программы, на этом же листе в А6 будет сохранено число заполненных строк, а в А7 - столбцов.
Надеюсь, мой комментарий был Вам полезен.
...
Рейтинг: 0 / 0
17.03.2010, 13:30
    #36526015
bookreader
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конец файла Excel
Так, ясно, с прикреплением файлов проблемма....

Тогда, вот код:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 App=CreateOleObject("Excel.Application");
 App.OlePropertyGet("Workbooks").OlePropertyGet("Open", "D:\\hello.xlsx");
 Books=App.OlePropertyGet("Workbooks");
 Book=Books.OlePropertyGet("Item", 1 );
 Sheets=Book.OlePropertyGet("Worksheets");
 Sheet=Sheets.OlePropertyGet("Item", 1 );
 AnsiString tmp;
 int i= 0 ,j= 0 ;
 do
 {
   i++;
   tmp =Sheet.OlePropertyGet("Cells").OlePropertyGet("Item",i, 1 ).OlePropertyGet("Value");
 }
 while(tmp!="");
 do
 {
   j++;
   tmp =Sheet.OlePropertyGet("Cells").OlePropertyGet("Item", 1 ,j).OlePropertyGet("Value");
 }
 while(tmp!="");
 tmp =Sheet.OlePropertyGet("Cells").OlePropertyGet("Range","A1").OlePropertyGet("Value");
 Sheet.OlePropertyGet("Cells").OlePropertyGet("Range","A6").OlePropertySet("Value",i- 1 );
 Sheet.OlePropertyGet("Cells").OlePropertyGet("Range","A7").OlePropertySet("Value",j- 1 );

 Edit1->Text = tmp;
 App.OleProcedure("Quit");
}
...
Рейтинг: 0 / 0
17.03.2010, 19:06
    #36527002
zchvv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конец файла Excel
Может быть, так?
set r=Worksheets(shname).Range("A1").CurrentRegion
n=r.rows.count
for i = 1 to n
set c=r.cells(i,s)
c.value=...
next i
...
Рейтинг: 0 / 0
08.02.2011, 10:30
    #37103649
3BEPOBOY
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конец файла Excel
Добрый день!

Подскажите пожалуйста как определить последнюю непустую строку следующего файла(там отформатированные пустые строки есть и мой старый добрый метод
Код: plaintext
UsedRange.Rows.Count
не работает, привел даже демонстративный макросик). Поячеечную проверку на пустоту не предлагать.
...
Рейтинг: 0 / 0
08.02.2011, 10:47
    #37103689
sergeyvg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конец файла Excel
вот функции, что я обычно пользую

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
Sub test()
MsgBox RealLastRow(ActiveSheet)
End Sub

Function RealLastRow(WB As Worksheet) As Long
Dim C As Range, RowWork As Long, K As Long, I As Long
  Set C = WB.Cells.SpecialCells(xlCellTypeLastCell)
  RowWork =  0 
  For I =  1  To C.Column
    K = WB.Cells(C.Row +  1 , I).End(xlUp).Row: If K > RowWork Then RowWork = K
  Next I
  RealLastRow = RowWork
End Function

Function RealLastRowHide(WB As Worksheet) As Long
Dim UsR As Range, K As Long, I As Long, FreeC As Long
  RealLastRowHide =  1 
  Set UsR = WB.UsedRange
  FreeC = UsR.Column + UsR.Columns.Count
  If FreeC >  256  Then FreeC =  256 
On Error Resume Next
  For I = UsR.Row + UsR.Rows.Count -  1  To  1  Step - 1 
    K = WB.Rows(I).RowDifferences(comparison:=WB.Cells(I, FreeC)).Row
    If Err.Number =  0  Then
      RealLastRowHide = I: Exit Function
    Else
      Err.Clear
    End If
  Next I
End Function

...
Рейтинг: 0 / 0
08.02.2011, 11:04
    #37103734
3BEPOBOY
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конец файла Excel
Круто, спасибо. думаю в моем случае этого достаточно будет)
a = Cells(Rows.Count, 1).End(xlUp).Row
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Конец файла Excel / 20 сообщений из 20, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]