Я делаю рабочие книги в Excel, которые отправляют данные с одного листа на другие рабочие книги.Я использую метод копирования и вставки для этого.Книги сохраняются в Sharepoint (Onedrive) и являются общими.
У нас есть два вида рабочих тетрадей, первая - это планировщики проектов, вторая - совокупность всех проектов и дает обзор того, на какой стадии находится проект в данный момент, и в конечном итоге некоторые комментарии.Это вместе две строки данных.
Код в основном находит правильную неделю и строки для копирования (диапазон), затем открывает книгу сбора и ищет строки и столбец для вставки данных. Это всборник трудовых книжек.после этого первый диапазон копируется и вставляется во второй диапазон
Итак, мы тестировали эту систему и обнаружили некоторые проблемы.Если несколько человек находятся в рабочей книге или в рабочей книге проекта.В нем говорится, что есть некоторые поправки, поэтому файл нужно открыть заново.
Мое лучшее предположение, что есть некоторые строки кода, которые не работают должным образом в этом общем режиме Office 365. Потому что, когда мы обычноиспользуйте общие листы и просто введите данные, в конце концов, данные появятся с некоторой задержкой.
Я не уверен, достаточно ли ясен этот код для чтения.
Sub SyncToBureauplanner()
'Finds the projectplanner
Dim Thisproject As String
Thisproject = Range("A10").Value
Dim Projectplanner As String
Projectplanner = Thisproject & ".xlsm"
'remove protection from the projectplanner
'locate the bureauplanner
Dim ThisUser As String
ThisUser = Environ("username")
Dim Disk As String
Disk = "C:\Users\"
Dim Bureauplannerspath As String
Bureauplannerspath = "\bureau\planning
- Documenten\Bureauplanning\"
Dim File As String
File = "Bureauplanning.xlsm"
Dim BureauplannerPath As String
BureauplannerPath = Disk & ThisUser & Bureauplannerspath & File
'opens the bureauplanner
Workbooks.Open (BureauplannerPath)
'Remove protection from the Bureauplanner
Workbooks("Bureauplanning.xlsm").Sheets("Planning").Unprotect
'Search for the column of this week
Workbooks(Projectplanner).Activate
Workbooks(Projectplanner).Sheets("Planning").Unprotect
Dim CurrentWeek As String
CurrentWeek =
Workbooks(Projectplanner).Sheets("Planning").Range("C7").Value
Dim Weekcolumn As Range
With Workbooks(Projectplanner).Sheets("Planning").Range("15:15")
Set Weekcolumn = .Find(What:=CurrentWeek, LookIn:=xlValues,
LookAt:=xlWhole, MatchCase:=False, Searchformat:=False)
End With
'Makes the range wich will be copied
Dim GeneralData As Range
Set GeneralData =
Workbooks(Projectplanner).Sheets("Planning").Range(Cells(16,
Weekcolumn.Column), Cells(17, Weekcolumn.Offset(0, 106).Column))
'Search for the column and row where the Generaldata will be pasted
Dim ThisWeek As Range
Dim CurrentBureauWeek As String
CurrentBureauWeek =
Workbooks(Projectplanner).Sheets("Planning").Range("C7").Value
With Workbooks("Bureauplanning.xlsm").Sheets("Planning").Range("M10:DM10")
Set ThisWeek = .Find(What:=CurrentBureauWeek, LookIn:=xlValues,
LookAt:=xlWhole, MatchCase:=False, Searchformat:=False)
If Not ThisWeek Is Nothing Then
End If
End With
Dim Thisprojecrow As Range
With Workbooks("Bureauplanning.xlsm").Sheets("Planning").Range("B:B")
Set Thisprojectrow = .Find(What:=Thisproject, LookIn:=xlValues,
LookAt:=xlWhole, MatchCase:=False, Searchformat:=False)
If Not Thisprojectrow Is Nothing Then
End If
End With
Dim PasteStartcell As Range
Set PasteStartcell =
Workbooks("Bureauplanning.xlsm").Sheets("Planning").Cells
(Thisprojectrow.Offset(-1, 0).Row, ThisWeek.Column)
Dim PasteEndcell As Range
Set PasteEndcell =
Workbooks("Bureauplanning.xlsm").Sheets("Planning").Cells
(Thisprojectrow.Row, ThisWeek.Offset(0, 106).Column)
Dim Pasterange As Range
Set Pasterange = Range(PasteStartcell, PasteEndcell)
GeneralData.Copy
Pasterange.PasteSpecial (xlPasteValues)
Workbooks("Bureauplanning.xlsm").Sheets("Planning").Protect ,
UserInterfaceonly:=True
Workbooks("Bureauplanning.xlsm").Close
Workbooks(Projectplanner).Sheets("Planning").Protect ,
UserInterfaceonly:=True
End Sub
Я надеюсь, что кто-нибудь подскажет, как я могу копировать и вставлять данные в другую рабочую книгу без повторного открытия файлов, чтобы их можно было обновлять, когда другие люди находятся в файле