Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Акс и импорт из Экселя / 16 сообщений из 16, страница 1 из 1
18.01.2007, 15:08:48
    #34265275
Zalagaev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Акс и импорт из Экселя
Господа,

у меня есть такая процедура:

Public Sub MyImport(Fname2 As String)
Dim WB As Excel.Workbook, WS As Excel.Worksheet
Set WB = Excel.Workbooks.Open(Fname2)
Set WS = WB.Worksheets(1)

n = WS.Cells(3, 5)

' Тут мне надо в цикле перебрать все строки файла.
' Как узнать, сколько строк там есть?
' Типа .. и делай так до конца файла....


WB.Close
Set WB = Nothing

End Sub
...
Рейтинг: 0 / 0
18.01.2007, 15:14:14
    #34265311
Ac-Ex
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Акс и импорт из Экселя
Сделай связанную таблицу в Acc и работай там с ней.
...
Рейтинг: 0 / 0
18.01.2007, 15:18:29
    #34265335
Zalagaev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Акс и импорт из Экселя
Было б здорово, но этот документ каждый раз новый, место меняется, потом перелинкову делать..

если вот я так сделаю? Типа прокатит...

intRowIndex=2
Код: plaintext
1.
2.
While appExcel.Cells(intRowIndex, 1 ).Value <> ""
intRowIndex=intRowIndex+ 1 
....
...
Рейтинг: 0 / 0
18.01.2007, 15:26:09
    #34265362
vbapro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Акс и импорт из Экселя
WS.Cells.SpecialCells(xlCellTypeLastCell).Row - это номер последней строки на листе
...
Рейтинг: 0 / 0
18.01.2007, 15:27:03
    #34265367
KL (XL)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Акс и импорт из Экселя
тогда лучше так:

Код: plaintext
1.
2.
3.
4.
With WS
    For i= 2  To .Cells(.Rows.Count, 1 ).End(xlUp).Row
        MsgBox .Cells(i, 1 )
    Next i
End With

Если форматов не использовали, то еще

Код: plaintext
WS.UsedRange


KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
18.01.2007, 15:28:51
    #34265373
KL (XL)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Акс и импорт из Экселя
vbaproWS.Cells.SpecialCells(xlCellTypeLastCell).Row - это номер последней строки на листе

...со значением или форматом (!!!)
...
Рейтинг: 0 / 0
18.01.2007, 15:35:45
    #34265408
vbapro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Акс и импорт из Экселя
KL (XL) vbaproWS.Cells.SpecialCells(xlCellTypeLastCell).Row - это номер последней строки на листе

...со значением или форматом (!!!)

из хелпа:
Код: plaintext
1.
2.
3.
 Type    Required XlCellType. The cells to include.
...
xlCellTypeLastCell. The last cell in the used range 
...
или то или то, как я понимаю
...
Рейтинг: 0 / 0
18.01.2007, 15:40:32
    #34265427
KL (XL)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Акс и импорт из Экселя
vbapro KL (XL) vbaproWS.Cells.SpecialCells(xlCellTypeLastCell).Row - это номер последней строки на листе

...со значением или форматом (!!!)

из хелпа:
Код: plaintext
1.
2.
3.
 Type    Required XlCellType. The cells to include.
...
xlCellTypeLastCell. The last cell in the used range 
...
или то или то, как я понимаю

Именно :-)

SpecialCells(xlCellTypeLastCell) и UsedRange имеют один и тот же недостаток - для них последняя ячейка не обязательно та, которая заполнена.
...
Рейтинг: 0 / 0
18.01.2007, 15:52:03
    #34265484
KL (XL)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Акс и импорт из Экселя
Вот пример:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Sub test1()

    [B5:B50] =  1      
    MsgBox Cells.SpecialCells(xlCellTypeLastCell).Row 'правда

    [ 30 : 50 ].Delete
    MsgBox Cells.SpecialCells(xlCellTypeLastCell).Row 'вранье

    x = UsedRange 'пересчитываем и... 
    MsgBox Cells.SpecialCells(xlCellTypeLastCell).Row 'правда
    
    [B1:B90].Interior.ColorIndex =  5 
    MsgBox Cells.SpecialCells(xlCellTypeLastCell).Row '...кому как...
    
End Sub



KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
18.01.2007, 16:11:55
    #34265554
vbapro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Акс и импорт из Экселя
хороший пример, а можно найти последнюю ячейку с данными на листе с несколькими блоками, не обащая внимания на формат. т.е. получить результат .Address="N12" на листе
Код: plaintext
1.
2.
3.
    [A1:C3] =  1 
    [F6:H12] =  2 
    [K7:N9] =  3 
    [A1:Q90].Interior.ColorIndex =  40 
без подвоха, на самом деле интересно, а то может я зачастую лишней работой занимаюсь :)
...
Рейтинг: 0 / 0
18.01.2007, 16:26:14
    #34265610
Zalagaev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Акс и импорт из Экселя
да.. есть поле для размышления... Но мне проще, у меня программно слитый файлик, с единым форматом и одним блоком. Как только встретилась пустая строка = значит конец. Вариантов нет. Так что всем спасибо за мысли.
...
Рейтинг: 0 / 0
18.01.2007, 16:31:26
    #34265635
KL (XL)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Акс и импорт из Экселя
vbapro...а можно найти последнюю ячейку с данными на листе с несколькими блоками, не обащая внимания на формат. т.е. получить результат .Address="N12" на листе
Код: plaintext
1.
2.
3.
    [A1:C3] =  1 
    [F6:H12] =  2 
    [K7:N9] =  3 
    [A1:Q90].Interior.ColorIndex =  40 

Да.

если нужно получить "N12", то так

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Sub test1()
    Dim rng As Range
    
    [A1:C3] =  1 
    [F6:H12] =  2 
    [K7:N9] =  3 
    [A1:Q90].Interior.ColorIndex =  40 
    
    Set rng = Cells
    MsgBox Intersect( _
      rng.Find("*", rng( 1 ), xlValues, xlWhole, xlByRows, _
        xlPrevious).EntireRow, _
      rng.Find("*", rng( 1 ), xlValues, xlWhole, xlByColumns, _
        xlPrevious).EntireColumn).Address
End Sub

а если самую нижнюю ("H12"), то так

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Sub test2()
    Dim rng As Range
    
    [A1:C3] =  1 
    [F6:H12] =  2 
    [K7:N9] =  3 
    [A1:Q90].Interior.ColorIndex =  40 
    
    Set rng = Cells
    MsgBox rng.Find("*", rng( 1 ), xlValues, xlWhole, xlByRows, xlPrevious).Address
End Sub

vbaproбез подвоха, на самом деле интересно, а то может я зачастую лишней работой занимаюсь :)
я вопросы с подвохом очень даже уважаю :-)))

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
18.01.2007, 16:43:41
    #34265687
vbapro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Акс и импорт из Экселя
KL (XL)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Sub test1()
    Dim rng As Range
    
    [A1:C3] =  1 
    [F6:H12] =  2 
    [K7:N9] =  3 
    [A1:Q90].Interior.ColorIndex =  40 
    
    Set rng = Cells
    MsgBox Intersect( _
      rng.Find("*", rng( 1 ), xlValues, xlWhole, xlByRows, _
        xlPrevious).EntireRow, _
      rng.Find("*", rng( 1 ), xlValues, xlWhole, xlByColumns, _
        xlPrevious).EntireColumn).Address
End Sub

инетерсная идея
...
Рейтинг: 0 / 0
18.01.2007, 16:57:14
    #34265753
KL (XL)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Акс и импорт из Экселя
vbaproинетерсная идея

Не моя, но к своему стыду не помню чья :-(
...
Рейтинг: 0 / 0
18.01.2007, 17:51:44
    #34266025
vkodor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Акс и импорт из Экселя
KL (XL) vbaproинетерсная идея

Не моя, но к своему стыду не помню чья :-(
Здесь эта идея проскакивала
там еще одна хорошая идея (для скрытых строк)
Поиск последней ячейки в Excel
...
Рейтинг: 0 / 0
18.01.2007, 18:03:21
    #34266072
KL (XL)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Акс и импорт из Экселя
vkodor KL (XL) vbaproинетерсная идея

Не моя, но к своему стыду не помню чья :-(
Здесь эта идея проскакивала
там еще одна хорошая идея (для скрытых строк)
Поиск последней ячейки в Excel

Вот - нашел в архиве 2002 года, но в Google почему-то нет:

Код: plaintext
\'---------------------------------------------- \nFunction LastCell(ws As Worksheet) As Range \n  Dim LastRow&, LastCol% \n\n\n   \'From Rodney Powell, Microsoft MVP \n   \'"The sample procedure below is a variation on a \n   \'technique I learned from fellow Excel MVP, Bob Umlas." \n   \' \n   \'http://www.exceldeveloper.com/geeks012.shtml \n\n\n  On Error Resume Next \n  With ws \n  \' Find the last real row \n    LastRow& = .Cells.Find(What:="*", _ \n      SearchDirection:=xlPrevious, _ \n      SearchOrder:=xlByRows).Row \n  \' Find the last real column \n    LastCol% = .Cells.Find(What:="*", _ \n      SearchDirection:=xlPrevious, _ \n      SearchOrder:=xlByColumns).Column \n  End With \n\n\n\' Initialize a Range object variable \n\' for the last populated row. \n  Set LastCell = ws.Cells(LastRow&, LastCol%) \n\nEnd Function 
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Акс и импорт из Экселя / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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