2017-01-21 10 views
0

У меня есть таблица 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

ответ

0

не совсем полный ответ, но я бы не сосредоточитесь на поиске и замене ссылок на внешние таблицы для обновления ваших формул. Excel должен быть способен поддерживать внешние ссылки на электронные таблицы при изменении пути к файлу , если все правильно настроен ... поиск и замена ссылок - это обход, и обходные процессы 1) обычно разваливаются и 2) обычно не нужны при правильном планировании.

Поэтому я хотел бы сосредоточиться на следующем: 1) Что происходит с любой из электронных таблиц, которые могут привести к тому, что ваша таблица потеряет свои ссылки, - это что-то делается с исходной электронной таблицей между рабочими и не работающими ссылками ? Если этот файл обновляется вручную или через макрос без надлежащего ухода, вы можете в конечном итоге удалить ссылки.

2) Изучите структуру того, что вы пытаетесь сделать и как вы используете эти две таблицы. необходимо иметь данные во внешней электронной таблице? Вы можете написать макрос, чтобы скопировать и вставить данные из исходного файла во вторичную вкладку на главной электронной таблице. Таким образом, все ваши формулы не будут включать внешние ссылки ...

Надеется, что это помогает, TheSilkCode

+0

Клиент имеет несколько внешних таблиц, которые ссылаются на главную таблицу. Каждая из этих внешних таблиц содержит сотни листов и записей с расчетами. Самая большая проблема заключается в том, что пользователи копируют и вставляют некоторые из этих файлов, находящихся в подпапках, на другие компьютеры или в местах расположения файлов, когда они работают над ними, а затем копируют их обратно исходное местоположение файла. Основной лист действительно просто извлекает данные из общего листа электронных таблиц других таблиц. Возможно, вы копируете данные из другой таблицы. Я попытаюсь и вернусь к вам. Спасибо –

+0

Yikes- похоже, что вам действительно нужно обновить до решения Access DB со всеми этими данными ... несколько таблиц + сотни вкладок + несколько пользователей, изменяющих их без правильной системы управления версиями = Big Trouble ... Надеюсь, вы обнаружите преступника, если бы мне пришлось угадать, я бы сказал, что сосредоточиться на изменениях в исходном файле больше, чем на изменение местоположения нижележащих разбросанных ... TheSilkCode – TheSilkCode

 Смежные вопросы

  • Нет связанных вопросов^_^