Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: Сравнить книги? Добавлено: 21.03.06 18:34  

Автор вопроса:  78952
1.Как сравнить какую-нибудь книгу(не открытую) с текущей, т.е. как получить путь и ее имя я знаю, имя сравниваемого листа не меняется, тоже не проблемма, но вот как сделать так, чтобы она вдруг не стала актив и тому подобное, т.е. с текущей нужно сравнить.
2.В обеих книгах есть столбик id содержащий, ну понятно, что он содержит :) мне вот интересно как организовать цикл так чтобы он смотрел в книги которую я открываю этот столбик и смотрел в активной(текущей) этот столбик и если цифры совпадают, то делел то-то при этом мне нужно знать адреса(т.е. не нужно просто чтобы он из открытой книги копировал определенные ячейки из строки в которой совпадающий id в текущую) а если в открытой книге есть id которого нет в текущей, то чтобы он добавлял этот id в последнюю путую ячейку.
Я знаю, что не очень хорошо изъясняюсь, и что без конкроетных примеров и того, что не получается, но мне можно любой похожий код с коментариями и я в принципе разберусь :)
искать я думаю нужно с помощью команды find или like не важно, открывать Application.GetOpenFilename и offset
я просто не знаю, как рализовать некоторые моменты и я встаю в тупик и ничего не могу делать, психую и руки опускаются, просто знаний в програм.. не хватает для граммотного построения кода, только плагиат, подстроенный под себя :(

Ответить

  Ответы Всего ответов: 1  

Номер ответа: 1
Автор ответа:
 Дмитрий



ICQ: 109611764 

Вопросов: 3
Ответов: 3
 Профиль | | #1 Добавлено: 27.03.06 18:33
Правильно ли я понял, что надо получить данные из закрытой экселевской книги?

Вот как пример:

Sub get_data()

Dim tmp_val As Variant
Dim arg, st1, st2, st3, path As String
Dim i, j As Integer
    path = "PATH" ' путь к файлу без имени файла
    st2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    st1 = Chr(39) + path+"[1.xls]list1" + Chr(39) + "!" '1.xls - нужный файл, list1 - нужный лист
    Sheets("lst1";).Select ' куда вставляем
    For i = 5 To 14
        For j = 4 To 9
            st3 = Mid(st2, j, 1) + CStr(i)
            arg = st1 + Range(st3).Range("A1";).Address(, , xlR1C1)
            Range(st3).Select
            tmp_val = Application.ExecuteExcel4Macro(arg)
            ActiveCell.Value = tmp_val
        Next j
    Next i
End Sub

Этот код копирует данные из закрытой книги 1.xls из листа list1 ячейки d5-i14 в текущую книгу в лист lst1 тот же диапазон

Ключевой метод здесь - Application.ExecuteExcel4Macro

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам