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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.04.2015, 14:27   #1
crn0
Новичок
Джуниор
 
Регистрация: 21.04.2015
Сообщений: 2
По умолчанию Макрос сравнения двух баз и переноса данных (главная база на сетевом ресурсе)

Доброго времени суток! Просьба помочь с макросом. Суть проблемы:
Есть база, расположенна на сетевом ресурсе, в которую нужно макросом перенести данные из баз сотрудников, базы сотрудников на рабочих местах. Макрос должен открыть базу сотрудника и перенести из нее определенные данные. Возникла проблема, если делаем прямую ссылку на базу сотрудника то все работает, если же выбор производим через окно, то данные не переносятся. Заранее спасибо!

Цитата:
Function GetFilePath(Optional ByVal Title As String = "Âûáåðèòå ôàéë äëÿ îáðàáîòêè", _
Optional ByVal InitialPath As String = "c:\", _
Optional ByVal FilterDescription As String = "Êíèãè Excel", _
Optional ByVal FilterExtention As String = "*.xlsm*") As String
InitialPath
On Error Resume Next
With Application.FileDialog(msoFileDialo gOpen)
.ButtonName = "Âûáðàòü": .Title = Title: .InitialFileName = InitialPath
.Filters.Clear: .Filters.Add FilterDescription, FilterExtention
If .Show <> -1 Then Exit Function
GetFilePath = .SelectedItems(1): PS = Application.PathSeparator
End With
End Function

Sub Main()

Dim i As Long, x As Range: Application.ScreenUpdating = False
Dim sh As Worksheet, WB As Workbook

Filename$ = GetFilePath("Âûáåðèòå ôàéë Excel", "c:\", "*.xlsm")
If Filename$ = "" Then Exit Sub
Application.ScreenUpdating = False

ThisWorkbook.Sheets(1).Activate

Set sh = ActiveSheet

Set WB = Workbooks.Open(Filename$)
With WB.Sheets(1)
ActiveSheet.Unprotect ("1")

For i = 1 To Cells(Rows.Count, 5).End(xlUp).Row
Set x = .[M:M].Find(Trim(Cells(i, 5)))
If Not x Is Nothing Then Cells(i, 6) = .Cells(x.Row, 4)
If Not x Is Nothing Then Cells(i, 7) = .Cells(x.Row, 7)
If Not x Is Nothing Then Cells(i, 3) = .Cells(x.Row, 16)
If Not x Is Nothing Then Cells(i, 15) = .Cells(x.Row, 17)
Next: End With

End Sub
crn0 вне форума Ответить с цитированием
Старый 21.04.2015, 14:42   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

эту строку
Код:
ThisWorkbook.Sheets(1).Activate
поместите перед циклом For
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 21.04.2015, 14:50   #3
crn0
Новичок
Джуниор
 
Регистрация: 21.04.2015
Сообщений: 2
По умолчанию

Спасибо, помогло)
crn0 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Макрос сравнения двух листов в таблице с разнесением в другие листы Rusich Microsoft Office Excel 1 22.05.2013 08:49
Необходима написать макрос переноса данных ggguzik Microsoft Office Excel 20 09.10.2012 23:08
Макрос переноса данных TbIL Microsoft Office Excel 3 15.02.2012 21:34
Макрос переноса данных. madex Microsoft Office Excel 13 18.12.2011 16:44
макрос для переноса введенных данных vostok Microsoft Office Excel 2 27.11.2010 11:16