링크 업데이트 경고를 억제하는 방법
엑셀 파일을 많이 여는 스크립트를 작성하려고 합니다.다음과 같은 프롬프트가 계속 표시됩니다.
This workbook contains links to other data sources.
되지 않도록 하고 는 자동으로 수 있게 하면, 「」를 클릭하지 .Don't Update
각각에 대해서요.현재 다음을 사용하고 있습니다.
function getWorkbook(bkPath as string) as workbook
Application.EnableEvents=False
Application.DisplayAlerts=False
getWorkbook=Workbooks.Open(bkPath,updatelinks:=0,readonly:=false)
end function
다만, 메세지는 아직 표시됩니다.어떻게 하면 억제할 수 있을까요?
EDIT:에 대해 이 것 는 표시되지 .저는 이 메시지가 표시되지 않았습니다.This workbook contains one or more links that cannot be updated
를 보낼 수 있습니다.DisplayAlerts
되어 있기 에, 가 끊어집니다.워크북은 Windows 서버상의 폴더에 있는 동등한 파일에 링크되어 있기 때문에, 그 폴더(비즈니스 플로우의 일부로서)에서 일치하는 파일이 삭제되면, 링크가 끊어집니다.링크가 끊어졌을 때 경고를 억제할 수 있습니까?
또한 Excel 2010을 사용하고 있습니다.
갱신:
논의한 했고, 이 는 모든 항목에 .i
s.
준비
우선 VMWare를 탑재한 Clean Win7 SP1 Ultimate x64 가상 머신에 Office 2010 x86 설치를 실시했습니다(이것은 일상 테스트 태스크에서는 통상적인 루틴이기 때문에 많은 작업을 도입하고 있습니다).
그리고 다음 Excel 옵션만 변경했습니다(다른 옵션은 모두 설치 후 그대로 남습니다).
Advanced > General > Ask to update automatic links
확인:
Trust Center > Trust Center Settings... > External Content > Enable All...
(데이터 접속과 관련된 것은 이 경우 중요하지 않을 가능성이 높지만):
전제 조건
준비해서 배치했습니다.C:\
대로의 @Siddharth Rout
갱신된 답변에 기재된 제안(고객의 편의를 위해 공유):https://www.dropbox.com/s/mv88vyc27eljqaq/Book1withLinkToBook2.xlsx 링크북이 삭제되어 공유북의 링크를 사용할 수 없게 되었습니다(확실히).
수동 개방
위의 공유 파일은 열 때 경고(위에 나열된 Excel 옵션 포함) 2개를 표시 순서대로 표시합니다.
경고 #1
후 ★★★★★Update
예상대로 하나 더 받았어요.
경고 #2
제 생각엔 제 테스트 환경은 지금과 거의 비슷할 것 같아요.OP
잘 되어가고 ) ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★」
VBA 오프닝
이제 가능한 모든 옵션을 차근차근 시도해 보겠습니다.심플화를 위해서, 관련하는 코드 행만을 공유합니다(코드가 들어간 샘플 파일은 최종적으로 공유됩니다).
1. 심플한 어플리케이션문제집.열다.
Application.Workbooks.Open Filename:="C:\Book1withLinkToBook2.xlsx"
놀랄 일도 아닙니다. 위의 수동 열기처럼 두 가지 경고가 모두 발생합니다.
2. 신청DisplayAlerts = False
Application.DisplayAlerts = False
Application.Workbooks.Open Filename:="C:\Book1withLinkToBook2.xlsx"
Application.DisplayAlerts = True
이 코드는 WARNING #1로 종료되며, 어느 하나의 옵션이 클릭되었습니다( ).Update
Don't Update
)는 그 시키지 않습니다. 경고는 발생하지 않습니다.Application.DisplayAlerts = False
경고 #2를 억제합니다.
3. 신청AskToUpdateLinks = False
Application.AskToUpdateLinks = False
Application.Workbooks.Open Filename:="C:\Book1withLinkToBook2.xlsx"
Application.AskToUpdateLinks = True
★★의 DisplayAlerts
이 코드는 WARNING #2로 끝납니다.Application.AskToUpdateLinks = False
경고 #1을 억제합니다.
4. 이중의 거짓
Application.AskToUpdateLinks = False
Application.DisplayAlerts = False
Application.Workbooks.Open Filename:="C:\Book1withLinkToBook2.xlsx"
Application.DisplayAlerts = True
Application.AskToUpdateLinks = True
이 코드는 BOTH WARNINGs를 억제하는 것으로 끝납니다.
5. UpdateLinks:=거짓말
Application.Workbooks.Open Filename:="C:\Book1withLinkToBook2.xlsx", UpdateLinks:=False
이 솔루션는 '1라인'에 의해 되었습니다).@brettdj
)는 Double False와 동일하게 동작합니다.NO WARNINGs는 표시되지 않습니다.
결론들
좋은 테스트 프랙티스와 매우 중요한 해결 사례(서드파티에 워크북을 보내는 동안 매일 이러한 문제에 직면할 수 있으며, 이제 준비가 완료됨)를 제외하고, 2가지 더 배웠습니다.
- Excel 옵션은 버전에 관계없이 특히 VBA 솔루션에서는 중요합니다.
- 모든 문제에는 명확하지 않고 복잡한 문제와 함께 짧고 우아한 해결책이 있습니다.한 번만 더 증명해 주세요!)
솔루션에 공헌해 주신 모든 분들, 특히 문제를 제기해 주신 OP님들께 감사드립니다.저의 조사와 철저한 테스트 절차가 저뿐만 아니라 도움이 되었기를 바랍니다.)
위의 코드샘플이 포함된 샘플파일은 공유됩니다(많은 행이 의도적으로 코멘트됩니다).https://www.dropbox.com/s/9bwu6pn8fcogby7/NoWarningsOpen.xlsm
원본 답변(Excel 2007에 대해 특정 옵션을 사용하여 테스트 완료):
이 이는, 「Wildcards」의한 모든 파일을 루프 .이 코드는, 에서 와일드 카드를 사용해 지정된 모든 Excel 파일을 루프 합니다.InputFolder
:
Sub WorkbookOpening2007()
Dim InputFolder As String
Dim LoopFileNameExt As String
InputFolder = "D:\DOCUMENTS\" 'Trailing "\" is required!
LoopFileNameExt = Dir(InputFolder & "*.xls?")
Do While LoopFileNameExt <> ""
Application.DisplayAlerts = False
Application.Workbooks.Open (InputFolder & LoopFileNameExt)
Application.DisplayAlerts = True
LoopFileNameExt = Dir
Loop
End Sub
외부 링크를 사용할 수 없는 책으로 시도했습니다.경고 없음.
샘플 파일: https://www.dropbox.com/s/9bwu6pn8fcogby7/NoWarningsOpen.xlsm
Excel의 VBA Editor를 열고 즉시 창에 입력합니다(스크린샷 참조).
Application.AskToUpdateLinks = False
Excel을 닫고 파일을 엽니다.프롬프트는 다시 표시되지 않습니다.워크북을 닫으면 다른 워크북에서도 작동하지 않습니다.
스크린샷:
편집
코드에 적용하면 코드는 다음과 같습니다.
Function getWorkbook(bkPath As String) As Workbook
Application.AskToUpdateLinks = False
Set getWorkbook = Workbooks.Open(bkPath, False)
Application.AskToUpdateLinks = True
End Function
따르다
Sigil, 아래 코드는 링크가 끊어진 파일에서도 작동합니다.여기 제 테스트 코드가 있습니다.
테스트 조건
- 2번으로 하다을 붙여주세요.
Sample1.xlsx
★★★★★★★★★★★★★★★★★」Sample2.xlsx
해 두도록 하겠습니다.C:\
- 내 " " "
A1
Sample1.xlsx
공식은 이렇게='C:\[Sample2.xlsx]Sheet1'!$A$1
- 두 파일을 모두 저장한 후 닫습니다.
- 샘플 2.xlsx 삭제!!
- 을 열면이 이 이 코드를 실행하세요.
Sample
프롬프트가 표시되지 않습니다.
코드
Option Explicit
Sub Sample()
getWorkbook "c:\Sample1.xlsx"
End Sub
Function getWorkbook(bkPath As String) As Workbook
Application.AskToUpdateLinks = False
Set getWorkbook = Workbooks.Open(bkPath, False)
Application.AskToUpdateLinks = True
End Function
Excel 2016 워크북/파일을 만들 때도 비슷한 문제가 있었고, 이름을 변경했는데 어찌된 영문인지 이전 워크북 이름은 그대로 유지되었습니다.수많은 검색 끝에...뭐, 거기서 어떤 최종적인 해답도 찾지 못했는데...
[DATA] -> [Edit Link] -> [ Startup Prompt ](하부)로 이동합니다.그러면 가장 적합한 옵션을 선택하십시오.
(댓글을 달기에 충분한 rep 포인트가 없습니다만, 여기에 답변을 명확하게 하고 싶습니다.)
어플.AskToUpdateLinks = False는 원하는 것이 아닐 수 있습니다.
False로 설정하면 MS Excel은 링크를 자동으로 업데이트하려고 시도하지만 사용자에게 미리 메시지를 표시하지 않습니다. 이는 직관에 반하는 분류입니다.
링크를 업데이트하지 않고 파일을 여는 경우 올바른 해결책은 다음과 같습니다.
워크북열기(UpdateLinks:=0)
관련 링크: AskToUpdateLinks=False와 UpdateLinks의 차이:=0
워크북을 수동으로 Excel에서 열었을 때 다른 워크북 링크를 업데이트할지 묻는 프롬프트를 표시하지 않도록 하고 싶었습니다(VBA를 통해 프로그래밍 방식으로 여는 것이 아니라).는 다음을 포함하려고 .Application.AskToUpdateLinks = False
의 Auto_Open()
이치노하지만, 만약 당신이 대신 그것을 여기에 넣는다면Workbook_Open()
ThisWorkbook
이치노대화상자는 억제되지만 업데이트는 백그라운드에서 자동으로 수행됩니다.
Private Sub Workbook_Open()
' Suppress dialog & update automatically without asking
Application.AskToUpdateLinks = False
End Sub
적어도 이 일을 처리할 수 있는 임시 해결책을 찾았습니다."Update Links" 창이 뜨기를 기다리는 짧은 AutoIt 스크립트를 작성한 후 "Don't Update" 버튼을 클릭합니다.코드는 다음과 같습니다.
while 1
if winexists("Microsoft Excel","This workbook contains links to other data sources.") Then
controlclick("Microsoft Excel","This workbook contains links to other data sources.",2)
EndIf
WEnd
아직까지는 효과가 있는 것 같습니다.그러나 완전히 VBA로만 구성된 솔루션을 찾고 싶기 때문에 독립 실행형 애플리케이션으로 만들 수 있습니다.
이 문제(또는 그 일부)를 해결하기 위해 추가 정보를 제공할 수 있기를 바랍니다.
하면 '열리다'를 열 수 .Excel
다른 사람으로부터 파일을 제출합니다.변경을 위해 Peter L.의 코드 행은 다음과 같습니다.
Application.Workbooks.Open Filename:="C:\Book1withLinkToBook2.xlsx", UpdateLinks:=3
은 이이에에 this this this this this에 있습니다.MSDS
그 결과 경고 없이 모든 것(예, 모든 것)만 업데이트됩니다.매크로를 기록하는 경우에도 확인할 수 있습니다.
»MSDS
.MS EXCEL 2010
★★★★★★★★★★★★★★★★★」2013
는 ★★★★★★★★★라고 생각하고 있습니다.MS EXCEL 2016
츠미야
있다MS EXCEL 2013
그리고 이 주제와 거의 같은 상황이 됩니다. 파일을.A
가 있는 경우Workbook_Open
이벤트 코드는 링크 업데이트 프롬프트에 항상 걸려 있습니다.다른 파일이 있다(call it).B
)이 접속되어 피벗 테이블에서 강제로 파일을 엽니다.A
을 사용법A
백그라운드에서 조용히 파일링하고, 위에서 쓴 줄만 사용합니다.Windows("A.xlsx").visible = false
시간이 것 ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★A
B
문제나 경고 없이 완전히 업데이트되는 파일입니다.
하려면 , 「경고」와「경고」를 할 수 있습니다.AskToUpdateLinks
★★★★★★★★★★★★★★★★★」DisplayAlerts
.
Application.AskToUpdateLinks = False
Application.DisplayAlerts = False
이 대화에 대한 경고로요링크 업데이트 알림을 삭제하려면 workbook_open() 내에서 다음과 같은 작업을 수행합니다.
Private Sub workbook_Open()
Application.ThisWorkbook.UpdateLinks = xlUpdateLinksNever
#Your code goes here
Application.ThisWorkbook.UpdateLinks = xlUpdateLinksAlways
End Sub
언급URL : https://stackoverflow.com/questions/14908372/how-to-suppress-update-links-warning
'IT' 카테고리의 다른 글
종속성 속성 변경 듣기 (0) | 2023.04.13 |
---|---|
wpf 응용 프로그램에 이상한 블랙박스가 표시됨 (0) | 2023.04.13 |
c#을 사용하여 SQL Server 테이블 변경을 감시하는 방법 (0) | 2023.04.13 |
git-merge --dry-run 옵션이 있나요? (0) | 2023.04.13 |
OLE DB 공급자 'Microsoft.Jet.OLEDB.4.0'은 분산 쿼리에 사용할 수 없습니다. (0) | 2023.04.13 |