Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Синхронизация файлов - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Синхронизация файлов (Макросы/Sub)
Синхронизация файлов
Паштет Дата: Пятница, 16.12.2022, 14:07 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 147
Репутация: 5 ±
Замечаний: 0% ±

Excel 2010
Есть база данных в экселе пронумерованных по порядку изделий, которую заполняют несколько пользователей по сети, и один вне сети, после того, как они выполнили работу. Изделия раздаются рандомно каждому пользователю. Для автономного пользователя сделал отдельный пользовательский файл, который успешно импортирует базу к себе, но вот с экспортом я застрял, так как нужно отправить данные в базу, только те, с которыми он работал, ориентируясь на индивидуальный номер изделия. Проблема в моем коде в том, что перед вставкой буфер обмена опустошается и на этом код останавливается.

[vba]
Код
Private Sub ExportB_Click()
With Sheets("setting")
    itsbook = .Cells(15, 1)          'имя текущей книги пользовательского файла
    path = .Cells(13, 1)              'путь к книге с базой
    Namebook = .Cells(14, 1)     'имя книги с базой
End With
    
    On Error GoTo 5

        Workbooks.Open path, ReadOnly:=False
        
        Workbooks(itsbook).Activate
        With Sheets("Æóðíàë ÈÁ")
          iLastRow = .Cells(Rows.Count, 1).End(xlUp).Row
          For y = 5 To iLastRow
                If .Cells(y, 13) <> Empty And .Cells(y, 17) = Empty Then     'определение строки, которую нужно скопировать
                ak = .Cells(y, 1)                    'определение индивидуального номера изделия
                Range(Sheets("Æóðíàë ÈÁ").Cells(y, 13), Sheets("Æóðíàë ÈÁ").Cells(y, 53)).Copy
                    
                    Workbooks(Namebook).Activate
                    With Sheets("Æóðíàë ÈÁ")
                        If .FilterMode Then .ShowAllData
                        iRow = .Range(.Cells(5, 1), .Cells(.Cells(Rows.Count, 1).End(xlUp).Row, 1)).Find(What:=Val(ak)).Row     'поиск номера строки в соответствии с индивидуальным номеров в базе
                        
                    Sheets("Æóðíàë ÈÁ").Range(Sheets("Æóðíàë ÈÁ").Cells(iRow, 13), Sheets("Æóðíàë ÈÁ").Cells(iRow, 53)).PasteSpecial Paste:=xlPasteValuesAndNumberFormats        'вставка данных в базу, отсюда не работает.
                    End With
               End If
        Workbooks(itsbook).Activate
        
        Next y
        End With
        Workbooks(Namebook).Activate
        Workbooks(Namebook).SaveAs Filename:=path
        Workbooks(Namebook).Close
    On Error GoTo 0

Workbooks(itsbook).Activate
    
5: End Sub
[/vba]
 
Ответить
СообщениеЕсть база данных в экселе пронумерованных по порядку изделий, которую заполняют несколько пользователей по сети, и один вне сети, после того, как они выполнили работу. Изделия раздаются рандомно каждому пользователю. Для автономного пользователя сделал отдельный пользовательский файл, который успешно импортирует базу к себе, но вот с экспортом я застрял, так как нужно отправить данные в базу, только те, с которыми он работал, ориентируясь на индивидуальный номер изделия. Проблема в моем коде в том, что перед вставкой буфер обмена опустошается и на этом код останавливается.

[vba]
Код
Private Sub ExportB_Click()
With Sheets("setting")
    itsbook = .Cells(15, 1)          'имя текущей книги пользовательского файла
    path = .Cells(13, 1)              'путь к книге с базой
    Namebook = .Cells(14, 1)     'имя книги с базой
End With
    
    On Error GoTo 5

        Workbooks.Open path, ReadOnly:=False
        
        Workbooks(itsbook).Activate
        With Sheets("Æóðíàë ÈÁ")
          iLastRow = .Cells(Rows.Count, 1).End(xlUp).Row
          For y = 5 To iLastRow
                If .Cells(y, 13) <> Empty And .Cells(y, 17) = Empty Then     'определение строки, которую нужно скопировать
                ak = .Cells(y, 1)                    'определение индивидуального номера изделия
                Range(Sheets("Æóðíàë ÈÁ").Cells(y, 13), Sheets("Æóðíàë ÈÁ").Cells(y, 53)).Copy
                    
                    Workbooks(Namebook).Activate
                    With Sheets("Æóðíàë ÈÁ")
                        If .FilterMode Then .ShowAllData
                        iRow = .Range(.Cells(5, 1), .Cells(.Cells(Rows.Count, 1).End(xlUp).Row, 1)).Find(What:=Val(ak)).Row     'поиск номера строки в соответствии с индивидуальным номеров в базе
                        
                    Sheets("Æóðíàë ÈÁ").Range(Sheets("Æóðíàë ÈÁ").Cells(iRow, 13), Sheets("Æóðíàë ÈÁ").Cells(iRow, 53)).PasteSpecial Paste:=xlPasteValuesAndNumberFormats        'вставка данных в базу, отсюда не работает.
                    End With
               End If
        Workbooks(itsbook).Activate
        
        Next y
        End With
        Workbooks(Namebook).Activate
        Workbooks(Namebook).SaveAs Filename:=path
        Workbooks(Namebook).Close
    On Error GoTo 0

Workbooks(itsbook).Activate
    
5: End Sub
[/vba]

Автор - Паштет
Дата добавления - 16.12.2022 в 14:07
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Синхронизация файлов (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2023 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!