У меня есть таблица October2016.xls с формулами для внешних ссылок на другие листы. Когда я копирую листы в другой каталог, я получу ошибку #REF. Например, мне нужно связать с Assembly Totals.xlsФормула Excel возвращает #REF при обращении к внешним листам и скопирована
В исходном каталоге на моем компьютере я открою файл October2016.xls, и в ячейке я увижу что-то вроде этого: = 'C: \ users \ desktop ... PROD DEPT \ PAPERLESS \ 2016 \ Oct \ Defects [Assembly Totals.xls]! Всего '! A1
При копировании на другой компьютер (или расположение файла на моем компьютере) я получу это: = 'C: \ users \ desktop ... PROD DEPT \ PAPERLESS \ 2016 \ Oct \ Defects [Assembly Totals.xls]! # REF'! A1
Я знаю, что формула все еще пытается следовать старой дорожка. Но, очевидно, при копировании в другой каталог это запутается. Если я заменил #REF словом «Total», тогда он будет работать нормально - я предполагаю, что это относительная относительная ссылка. Однако проблема заключается в том, что Excel хочет, чтобы я выбрал связанную электронную таблицу в формуле (Assembly Totals.xls) из окна «Обновить значения», чтобы перейти к вновь сохраненному пути/файлу. Это утомительно, когда у вас более 100 замен.
Я попытался написать поиск и заменить макрос, чтобы изменить путь. Замените слово #REF на слово Total. Я также заменю часть старого пути «пустой», поскольку эта часть пути больше не действительна в новом пути к каталогу. Например, предположим, что я только скопировал файлы из \ Defects [Assembly Totals.xls]! Total '! A1. Таким образом, я удалю «PROD DEPT \ PAPERLESS \ 2016 \ Oct \», потому что новый компьютер не будет иметь эти файлы.
Однако я все еще получаю сотни окон обновления, где мне нужно выбрать файл.
Вот что я сделал, чтобы устранить окно значений обновлений: - однако это не останавливает появление окон.
Sub terfuge()
' todo: Assign keystroke shortcut
If Application.DisplayAlerts Then
Application.DisplayAlerts = False
Else
Application.DisplayAlerts = True
End If
End Sub
Вот моя находка и заменить функция - которая прекрасно работает - это просто окно значения Update, которая продолжает появляться
Sub Multi_FindReplace()
Dim sht As Worksheet
Dim fndList As Variant
Dim rplcList As Variant
Dim x As Long
fndList = Array("#REF", "PROD DEPT\PAPERLESS\2016\Oct\")
rplcList = Array("Total", "")
'Loop through each item in Array lists
For x = LBound(fndList) To UBound(fndList)
'Loop through each worksheet in ActiveWorkbook
For Each sht In ActiveWorkbook.Worksheets
sht.Cells.Replace What:=fndList(x), Replacement:=rplcList(x), _
LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, _
SearchFormat:=False, ReplaceFormat:=False
Next sht
Next x
End Sub
Благодаря Martin
Клиент имеет несколько внешних таблиц, которые ссылаются на главную таблицу. Каждая из этих внешних таблиц содержит сотни листов и записей с расчетами. Самая большая проблема заключается в том, что пользователи копируют и вставляют некоторые из этих файлов, находящихся в подпапках, на другие компьютеры или в местах расположения файлов, когда они работают над ними, а затем копируют их обратно исходное местоположение файла. Основной лист действительно просто извлекает данные из общего листа электронных таблиц других таблиц. Возможно, вы копируете данные из другой таблицы. Я попытаюсь и вернусь к вам. Спасибо –
Yikes- похоже, что вам действительно нужно обновить до решения Access DB со всеми этими данными ... несколько таблиц + сотни вкладок + несколько пользователей, изменяющих их без правильной системы управления версиями = Big Trouble ... Надеюсь, вы обнаружите преступника, если бы мне пришлось угадать, я бы сказал, что сосредоточиться на изменениях в исходном файле больше, чем на изменение местоположения нижележащих разбросанных ... TheSilkCode – TheSilkCode