У меня есть исходная рабочая книга только с одним листом Sheet1
с:
- Ячейка
C2
называется "DEUX" (имя относительно листа Sheet1
) и содержит число 2 - Ячейка
D2
содержит число 3 - Ячейка
C3
называется «РЕЗУЛЬТАТ» (имя относительно листа Sheet1
) и содержит формулу «= DEUX + Sheet1! D2» (который дает 5)
Эта исходная рабочая книга находится в path1
.У меня есть копия исходного woorkbook на path2
, целевая книга.В него я добавил следующий макрос:
Public Sub CpyRange()
Dim pathToSource As String
pathToSource = "path1" 'the aforementionned path to source workbook
Dim wkbSource As Workbook
Set wkbSource = Workbooks.Open(pathToSource & "Source.xlsx")
Dim wksSource As Worksheet
Set wksSource = wkbSource.Sheets("Sheet1")
Dim rangeToCopy As Range
Application.DisplayAlerts = False
Set rangeToCopy = wksSource.Range("RangeToCopy")
rangeToCopy.Copy
ThisWorkbook.Sheets("Sheet1").Range("RangeToCopy").PasteSpecial xlPasteFormulas
Application.DisplayAlerts = True
wkbSource.Close
End Sub
(Без бита Application.DisplayAlerts = False
при запуске макроса у меня появлялись всплывающие окна "Формула или лист, который вы хотите переместить или скопировать, содержитимя DEUX "и т. д. Теперь у меня их нет, что я и хочу.)
Но у меня возникла проблема после запуска макроса: в ячейке C3
листа Sheet1
целевой книги Iимеют формулу: "= DEUX + 'path1 [Source.xlsx] Sheet1'! D2", где path1
- это путь к исходному wokbook для окон.
Я хотел бы иметь ту же формулу, что и в источнике.Рабочая книга, то есть: "= DEUX + Sheet1! D2".
Это пример, изолирующий проблему, с которой я столкнулся в реальной установке, где диапазон RangeToCopy
огромен, миллионы ячеек снесколько сотен тысяч формул. Итак, как бы мне этого добиться?
Замечание. У меня есть Sheet1!D2
, а не D2
только для того, чтобы смоделировать это вРеальная настройка ячейки находится на другом листе из той же книги.