2013-07-15 6 views
4

모든,통합 문서에서 변경 링크 프로그램

I 통합 문서의 링크를 변경하려면 다음 코드가 있습니다.

ThisWorkbook.ChangeLink "OldPath.xlsx", "NewPath.xlsx", xlLinkTypeExcelLinks

내 문제는 "NewPath.xlsx는"OldPath.xlsx보다 워크 시트 개체에 대한 약간 다른 이름을 가진 통합 문서를 나타내는 것입니다. 그렇다면 Excel 통합 문서와 연결된 경로뿐만 아니라 실제 개체/범위 참조 또는 문제의 외부 링크를 프로그래밍 방식으로 변경하는 방법이 있습니까?

미리 감사드립니다.

+0

나중에 참조 할 수 있도록 이름을 정의하면 나중에이 문제를 방지 할 수있는 가장 좋은 방법입니다. 셀을 이동해도 상관 없습니다 워크 시트 주위를 보거나 이름을 바꿀 수 있습니다. –

+0

처음부터 내 통합 문서 만있는 경우이 문제가 발생하지 않습니다. OpenXML SDK를 사용하여 다른 Appraoch를 사용하고 있습니다. 하지만 다른 프로젝트로 인해 슬램 쳤기 때문에 지금은 우선 순위가 낮습니다. – William

+0

또한 명명 된 범위가 작동하려면 연결된 통합 문서를 실제로 열어 데이터를 새로 고쳐야합니다. – William

답변

0

예, 있습니다. 통합 문서 시트 이름의 다른 발생을 가지고 있으며, 당신이 그 (것)이 검색에 의해 체포되고 싶지 않아

Sub UpdateSheetName() 

    Cells.Replace What:="OldSheetName", Replacement:="NewSheetName", LookAt:=xlPart, _ 
     SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ 
     ReplaceFormat:=False 
End Sub 

경우, 제한된 범위를 사용하는 간단한 교체 문을 사용합니다. 또한 "OldSheetName!"을 검색하여 제한 할 수 있습니다. ("!")와 "NewSheetName!"으로 대체하십시오.

+2

이 질문에서 간단한 코드 줄을 사용하는 데 아무런 차이가 없습니다. 두 가지 상황 모두에서 다른 소스에서 인식되지 않는 시트 변경 확인 창이 나타납니다. –

1

유일한 아이디어는 @ d-stroyer 솔루션의 확장 버전입니다. 당신은 (하나가 열려있는 경우 또는 단순히 통합 문서 참조)뿐만 아니라 문서의 경로를 포함하여 공식의 부품을 교체해야합니다

Cells.Replace What:="C:\Users\Name\Desktop\[OldPath.xlsx]OldSheetName", _ 
    Replacement:="C:\Users\Name\Desktop\[NewPath.xlsx]NewSheetName", LookAt:=xlPart, _ 
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ 
    ReplaceFormat:=False 

불행하게도,이 (내가 테스트하지, 생각) 당신이 원하는 경우 작동하지 않습니다 일련의 차트, 피벗 등의 데이터 소스 등

+0

맞습니다. 이것은 작동하지 않습니다. 또한 파일을 포함하고있는 폴더에서 파일을 분리하기 위해서는 OldPath와 NewPath를 구문 분석해야하기 때문에 조금 어색하다. – William

관련 문제