Чтобы прояснить мое понимание, у каждого пользователя есть электронная таблица MyData-1.xls, но в разных местах. Вы хотели бы отправить каждому человеку новую электронную таблицу MyData-2, которая автоматически получит данные из диапазона B8: C25 в MyData-1.xls?
Существуют различные способы сделать это, и ниже я предоставил один способ сделать это. Короче говоря, пользователь откроет MyData-2, нажмет кнопку, и код выполнит поиск MyData-1 в своем каталоге, откроет книгу, соберет данные, вставит их в MyData-2, а затем закроет MyData-1.
Sub UpdateWorkbook()
'Identify workbook you would like to pull data from (same for all users)
Dim TargetWorkbook As String
TargetWorkbook = "MyData-1"
'Get the full path of that workbook by searching in a specified directory
Dim TargetPathName As String
TargetPathName = GetFilePath(TargetWorkbook)
'Retrieve data in range B8:C25, copy and paste, then close workbook
Dim TargetRng As Range
Application.ScreenUpdating = False
Workbooks.Open Filename:=TargetPathName
Set TargetRng = Sheets("Sheet1").Range("B8:C25")
TargetRng.Copy Destination:=ThisWorkbook.Worksheets(1).Range("B8:C25")
ActiveWorkbook.Close
Application.ScreenUpdating = True
End Sub
Function GetFilePath(TargetWkbook As String) As String
Dim FullFilePath As String
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.EnableEvents = False
On Error Resume Next
With Application.FileSearch
.NewSearch
.LookIn = "C:\"
.FileType = msoFileTypeExcelWorkbooks
.SearchSubFolders = True
.Filename = TargetWkbook
If .Execute > 0 Then
FullFilePath = .FoundFiles(1)
End If
End With
GetFilePath = FullFilePath
Application.ScreenUpdating = True
Application.DisplayAlerts = True
Application.EnableEvents = True
End Function
Для пояснения:
- В подпункте сначала необходимо указать название рабочей книги MyData-1
- Функция GetFilePath получит полный путь к рабочему блоку. Обратите внимание, что я настроил его на диск «C: \», и вы можете изменить это
- Получив полный путь к файлу, мы можем легко открыть книгу и скопировать необходимый диапазон.
Обратите внимание, что обновление экрана отключено, чтобы создать «иллюзию» того, что рабочая книга не была открыта при копировании данных. Кроме того, я добавил кнопку на лист MyData-2 для запуска кода, т. Е. Пользователь открывает книгу, нажимает кнопку и данные импортируются.
Наконец, этот код может быть значительно расширен, и вы можете настроить его. Например, проверка ошибок, если файл не найден, поиск в нескольких каталогах (например, C: \, D:) ...
Надеюсь, это поможет вам начать на правильном пути