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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.08.2018, 09:24   #1
ProAndrey
 
Регистрация: 14.08.2018
Сообщений: 4
По умолчанию Замена дублирующих строк при переносе информации с одного файла в другой, Корректировка существующего кода

Добрый день, знатоки форума!
Прошу вас помочь в корректировки уже написанного кода.
Картина следующая:
Существует два файла:
- Индивидуальный (Данные отчетов сотрудников 3-го сектора) (рис. 1)
- Общий (Отчет за день) (рис. 2)
С индивидуального информация переносится в общий.
Если одинаковая информация уже занесена в общий файл, код сообщает об этом, но все равно дублирует в общий файл последней строкой.

Прошу вас помочь в корректировки кода чтобы данный дубль перезаписывался в общем отчете поверх существующего дубля.
Заранее благодарю за внимание к моей теме и полученный ответ!

Код:
Sub Кнопка3_Щелчок()
Set w = CreateObject("Excel.Application")
Set wb = w.Workbooks.Open("C:\Users\...\Отчетность\Данные отчетов сотрудников 3-го сектора.xlsx")
Set h = ThisWorkbook
i = 2
Do
i = i + 1
Loop Until wb.Sheets("Форма").Cells(i, 1) = ""
 
For j = 3 To i - 1   
If h.Sheets("Отчет").Cells(8, 10) = wb.Sheets("Форма").Cells(j, 13) Then        
otvet = MsgBox("Информация за прошедший день в Базе уже отражена." & vbCrLf & vbCrLf & _        
"Продолжить?", vbQuestion + vbOKCancel, "Внимание")        
Exit For    
End If
 
Next j
 
If otvet = vbCancel Then    
w.DisplayAlerts = False    
wb.Close    
w.DisplayAlerts = True    
Set wb = Nothing    
Set w = Nothing    
Exit Sub
End If
 
wb.Sheets("Форма").Cells(i, 1) = i - 2
wb.Sheets("Форма").Cells(i, 2) = h.Sheets("Отчет").Cells(4, 2) 'ФИО
wb.Sheets("Форма").Cells(i, 3) = h.Sheets("Отчет").Cells(5, 2) 'Дата
wb.Sheets("Форма").Cells(i, 4) = h.Sheets("Отчет").Cells(8, 1)
wb.Sheets("Форма").Cells(i, 5) = h.Sheets("Отчет").Cells(8, 2)
wb.Sheets("Форма").Cells(i, 6) = h.Sheets("Отчет").Cells(8, 3)
wb.Sheets("Форма").Cells(i, 7) = h.Sheets("Отчет").Cells(8, 4)
wb.Sheets("Форма").Cells(i, 8) = h.Sheets("Отчет").Cells(8, 5)
wb.Sheets("Форма").Cells(i, 9) = h.Sheets("Отчет").Cells(8, 6)
wb.Sheets("Форма").Cells(i, 10) = h.Sheets("Отчет").Cells(8, 7)
wb.Sheets("Форма").Cells(i, 11) = h.Sheets("Отчет").Cells(8, 8)
wb.Sheets("Форма").Cells(i, 12) = h.Sheets("Отчет").Cells(8, 9)  
 
w.DisplayAlerts = False
wb.Save
wb.Close
w.DisplayAlerts = True
Set wb = Nothing
Set w = Nothing    
End Sub
_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор
Изображения
Тип файла: jpg 1.jpg (49.1 Кб, 121 просмотров)
Тип файла: jpg 2.jpg (107.9 Кб, 125 просмотров)
Вложения
Тип файла: rar Отчет.rar (28.7 Кб, 7 просмотров)

Последний раз редактировалось Serge_Bliznykov; 14.08.2018 в 09:51.
ProAndrey вне форума Ответить с цитированием
Старый 14.08.2018, 09:55   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от ProAndrey Посмотреть сообщение
Если одинаковая информация уже занесена в общий файл, код сообщает об этом, но все равно дублирует в общий файл последней строкой.
очень странно.
а Вы в окошке выбираете "Ок" или "Cancel" ?
там дальше в коде по нажатию Cancel должен происходить выход из скрипта
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.08.2018, 12:58   #3
ProAndrey
 
Регистрация: 14.08.2018
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
очень странно.
а Вы в окошке выбираете "Ок" или "Cancel" ?
там дальше в коде по нажатию Cancel должен происходить выход из скрипта
Добрый день.
При нажатии на "Отмену" выход из скрипта, все правильно.
При нажатии на "Ок" запись дублируется, а не перезаписывает ту строку где нашел дубль.
ProAndrey вне форума Ответить с цитированием
Старый 14.08.2018, 13:15   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Код:
For j = 3 To i - 1   
If h.Sheets("Отчет").Cells(8, 10) = wb.Sheets("Форма").Cells(j, 13) Then        
otvet = MsgBox("Информация за прошедший день в Базе уже отражена." & vbCrLf & vbCrLf & _        
"Продолжить?", vbQuestion + vbOKCancel, "Внимание")        
Exit For    
End If
 
Next j
попробуйте заменить на такой код:
Код:

For j = 3 To i - 1   
  If h.Sheets("Отчет").Cells(8, 10) = wb.Sheets("Форма").Cells(j, 13) Then        
       otvet = MsgBox("Информация за прошедший день в Базе уже отражена." & vbCrLf & vbCrLf & _        
              "Продолжить?", vbQuestion + vbOKCancel, "Внимание")
       i = j
       Exit For    
  End If
Next j
.....
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.08.2018, 14:06   #5
ProAndrey
 
Регистрация: 14.08.2018
Сообщений: 4
Хорошо

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
попробуйте заменить на такой код:
Код:

For j = 3 To i - 1   
  If h.Sheets("Отчет").Cells(8, 10) = wb.Sheets("Форма").Cells(j, 13) Then        
       otvet = MsgBox("Информация за прошедший день в Базе уже отражена." & vbCrLf & vbCrLf & _        
              "Продолжить?", vbQuestion + vbOKCancel, "Внимание")
       i = j
       Exit For    
  End If
Next j
.....
МАГИЯ!
Бооольшое спасибо за помощь!!!
ProAndrey вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi,проблема при переносе проекта с одного компьютера на другой. sunny-plum Помощь студентам 7 04.10.2014 00:04
проблема при копировании одного столбца из одного файла в другой файл tanunya Помощь студентам 0 24.02.2012 21:30
C#: Перенос строк с одного файла в другой barhat Помощь студентам 15 07.02.2012 07:33
как сделать, чтобы при переносе с одного листа на другой данные не заменялись, а писались в новую строку? user199a Microsoft Office Excel 4 08.01.2011 18:13
Копирование к строк из одного файла в другой A_Orlov Помощь студентам 1 15.06.2010 14:49