Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.03.2009, 11:31   #1
Tavrida
Пользователь
 
Аватар для Tavrida
 
Регистрация: 30.03.2009
Сообщений: 17
По умолчанию Обновление таблицы. Работа с формами

Здравствуйте, уважаемые формучане!

Моя проблема состоит в следующем.
Имеется исходная таблица (Поля: код, номенклатура, ед.изм. , преиод, склад, поставщик, количество, сумма)
Каждый месяц данные этой таблицы должны обновляться.
Исходная таблица не всегда является активной при начале работы.
Исходная таблица и таблица-источник обновления находятся в разных книгах.

Я создаю форму. На ней TextBox1 и 3 кнопки:
Выбрать, Проверить и Обновить.
Кнопка Обновить недоступна при начале работы с формой.

При нажатии кнопки Выбрать должен выбирать файл-источник обновления и его имя
записывается в Textbox
С этом я более-менее разобралась:
Код:
  Private Sub SelectUpdateSource_Click()
   fileToOpen = Application _
    .GetOpenFilename("Excel Files (*.xls), *.xls")
  If fileToOpen <> False Then
      TextBox1.Text = fileToOpen
  Else: MsgBox "Файл не выбран!"
  End If
End Sub
Дальше сложнее:
При нажатии кнопки "Проверить" осуществляется проверка идентичности структур
источника обновления и обновляемой таблицы.
То есть, как я понимаю, можно проверить идентичность первые строки этих таблиц (названия полей).

Если структуры таблиц идентичны, то кнопка Обновить становится доступной.
Если нет, то сообщение MsgBox "Структуры таблицы источника-обновления и обновляемой таблицы неидентичны!", vbCritical, "Ошибка!" и кнопка обновить остается недоступной.

Принажатии на кнопку Обновить в исходную таблицу переносятся УНИКАЛЬНЫЕ (не содержащиеся в ней)
строки из таблицы источника-обновления.

Пожалуйста, помогите, очень поджимают сроки.
Заранее спасибо!!!
Вложения
Тип файла: rar Example.rar (8.7 Кб, 16 просмотров)
Piu piu

Последний раз редактировалось Tavrida; 30.03.2009 в 12:50.
Tavrida вне форума Ответить с цитированием
Старый 30.03.2009, 11:36   #2
Tavrida
Пользователь
 
Аватар для Tavrida
 
Регистрация: 30.03.2009
Сообщений: 17
По умолчанию

Было бы здорово, если бы Вы помогли мне разобраться, как
можно устроить Цикл For для сравнения таблиц из разных книг по первой строке.
И как только уникальные строки скопировать в конец таблицы.
Piu piu
Tavrida вне форума Ответить с цитированием
Старый 30.03.2009, 13:06   #3
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

приблизительно так:
Код:
Function IsEqual(wb1 As String, wb2 As String) As Boolean
  Dim c As Integer
  IsEqual = False
  For c = 1 To 10
    If Workbooks(wb1).ActiveSheet.Cells(1, c) <> Workbooks(wb2).ActiveSheet.Cells(1, c) Then Exit Function

  Next
  IsEqual = True
End Function
wb1, wb2 - имена книг, в которых приисходит сравнение 10 первых ячеек первой строки, активных листов.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 30.03.2009, 13:46   #4
Tavrida
Пользователь
 
Аватар для Tavrida
 
Регистрация: 30.03.2009
Сообщений: 17
Восклицание

Спасибо, что быстро среагировали!

Я не умею работать с листами и книгами.
Можете объяснить, мне сделать так, чтобы
сравнивался конкретный лист книги1 (например C:\Книга1.xls лист "Лист1") и лист книги 2 (D:\Книга2.xls лист "Лист2")

Листы книг не активны
Piu piu
Tavrida вне форума Ответить с цитированием
Старый 30.03.2009, 13:57   #5
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

1. Обе книги должны быть открыты (в одной из них будет находиться даный макрос)
Код:
Function IsEqual As Boolean
  Dim c As Integer
  IsEqual = False
  For c = 1 To 10
    If Workbooks("Книга1.xls").Sheets("Лист1").Cells(1, c) <> Workbooks("Книга2.xls").Sheets("Лист2").Cells(1, c) Then Exit Function
  Next
  IsEqual = True
End Function
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 30.03.2009, 14:31   #6
Tavrida
Пользователь
 
Аватар для Tavrida
 
Регистрация: 30.03.2009
Сообщений: 17
По умолчанию

Почему-то не получается:
Имя 1й таблицы у меня хранится в TextEdit

Задаю функцию
Код:
Function IsEqual() As Boolean
  Dim c As Integer
  IsEqual = False
  For c = 1 To 10
    If Workbooks(TextBox1.Text).Sheets("TDSheet").Cells(1, c) <> Workbooks("C:\Table.xls").Sheets("Suppliers").Cells(1, c) Then Exit Function
  Next
  IsEqual = True
End Function
Потом пишу в процедуре нажатия кнопки:
Код:
     flagOpen = False
    'Проверяем, открыт ли файл Таблицы-источника обновления
    
    For Each TableSource In Workbooks
        If TableSource.Name = TextBox1.Text Then flagOpen = True: Exit For
    Next
 
    'Если файл "Таблица" не открыт, открываем его
    
    If flagOpen = False Then
        Set TableSource = Workbooks.Open(TextBox1.Text)
    End If

 If IsEqual = False Then
        MsgBox "Неидентичны!", vbCritical, "Ошибка!"
    Else
        MsgBox "Идентичны!"
    End If
Почему-то все время выводит неидентичны=(
Что не так?
Piu piu
Tavrida вне форума Ответить с цитированием
Старый 30.03.2009, 15:14   #7
Tavrida
Пользователь
 
Аватар для Tavrida
 
Регистрация: 30.03.2009
Сообщений: 17
По умолчанию

Мне кажется я что-то не так делаю с именами книг и листов. Помогите, пожалуйста!
Piu piu
Tavrida вне форума Ответить с цитированием
Старый 30.03.2009, 20:25   #8
Tavrida
Пользователь
 
Аватар для Tavrida
 
Регистрация: 30.03.2009
Сообщений: 17
По умолчанию

Может быть я непонятно объясняю, могу я что-то уточнить?
Piu piu
Tavrida вне форума Ответить с цитированием
Старый 30.03.2009, 20:42   #9
mchip
Форумчанин
 
Регистрация: 24.06.2008
Сообщений: 516
По умолчанию

Выложите пожалуйста весь пример
Можно сделать все! Было бы время, да деньги...
mchip вне форума Ответить с цитированием
Старый 31.03.2009, 13:21   #10
Tavrida
Пользователь
 
Аватар для Tavrida
 
Регистрация: 30.03.2009
Сообщений: 17
По умолчанию

Прикрепляю пример таблиц и формы
Вложения
Тип файла: rar Пример.rar (29.0 Кб, 26 просмотров)
Piu piu

Последний раз редактировалось Tavrida; 31.03.2009 в 13:25.
Tavrida вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с дочерними формами Иванесс Помощь студентам 1 05.03.2009 00:44
Помогите понять. Работа с формами Vlad_sem PHP 5 02.12.2008 23:46
Работа с формами HAMMAN Общие вопросы Delphi 1 26.04.2007 01:18
Работа с формами dima00 Общие вопросы Delphi 4 11.04.2007 22:10