powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Конец файла Excel
20 сообщений из 20, страница 1 из 1
Конец файла Excel
    #36346356
Lexx_SQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!
Подскажите, пожалуйста, по какому условию организовать цикл чтения файла Ексел.... или как определить конец файла.
Спасибо.
...
Рейтинг: 0 / 0
Конец файла Excel
    #36346417
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lexx_SQL,

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


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

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

Попробуйте определить визуально
...
Рейтинг: 0 / 0
Конец файла Excel
    #36346434
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не совсем понятно, что требуется. Может так (по активному листу):
Код: plaintext
1.
2.
3.
4.
5.
Sub tt()
For Each cc In UsedRange.Cells
cc.Select
Next
End Sub
...
Рейтинг: 0 / 0
Конец файла Excel
    #36346566
Core12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если вы читаете из файла например в какой нить listview тогда вам точно нужен eof. А если по другому смотрите посты предыдущих участников.
...
Рейтинг: 0 / 0
Конец файла Excel
    #36346582
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
Конец файла Excel
    #36346607
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Конец файла Excel
    #36346622
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А так? Проверил, работает.
Код: 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
Конец файла Excel
    #36346656
Lexx_SQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
извиняюсь...

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

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

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

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

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

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

Код: 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
Конец файла Excel
    #36527002
zchvv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может быть, так?
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
Конец файла Excel
    #37103649
3BEPOBOY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

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

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


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