실제로이 정확한 문제가 발생하여 결국 내 문제의 해결책을 발견했습니다.
코드를 호출하는 데 사용하는 키보드 바로 가기에서 Shift 단추입니다.
명백하게 특별히 통합 문서가 열리고 시프트 키를 누르면,하지만 때 실행 코드를 방지하기 위해 설계된 엑셀의 기능 불행하게도 VBA를 통해 Workbook.Open
방법으로 통합 문서를 열고에도 영향을 끼친다. Excel 2003에 적용되는 KB Article 555263에 언급되었지만 Excel 2010에서도 동일한 문제가 발생하여 2007 년에도 영향을 미쳤습니다.
특히 프로그램 초기에 코드를 통해 통합 문서를 열려고 할 때 발생합니다. 실제로 Shift 단추를 놓을 충분한 시간이 있기 전에 코드에서 Workbook.Open
호출에 도달하면 Excel은 코드 실행을 차단하고 프로세스를 중단시키는 시도로 해석합니다. 그리고 오류 메시지 나 내가 찾은 것이 없습니다. 그것은 갑자기 멈춘다.
해결 방법/수정은 Workbook.Open
명령을 실행하기 전에 코드가 Shift 키가 해제 될 때까지 기다리는 코드입니다.
기사 당
, 당신의 매크로 코드를 추가하고 그것을 수행해야합니다
'Declare API
Declare Function GetKeyState Lib "User32" (ByVal vKey As Integer) As Integer
Const SHIFT_KEY = 16
Function ShiftPressed() As Boolean
'Returns True if shift key is pressed
ShiftPressed = GetKeyState(SHIFT_KEY) < 0
End Function
Sub Demo()
Do While ShiftPressed()
DoEvents
Loop
Workbooks.Open Filename:="C:\MyPath\MyFile.xlsx"
End Sub
(참고 :이 코드는 엑셀의 32 비트 버전의 64 비트 버전을 사용해야합니다. Declare
문에 PtrSafe
특성). 당신이 여분의 코드를 추가하지 않으려면
, 당신의 유일한 옵션은 사용하지 있습니다 Ctrl 키 + 시프트 + 매크로를 실행하기 위해, 또는에서 나중에 Workbook.Open
명령을 넣어 일부 문자 매크로를 시작한 후 Shift 키를 놓을 시간을주기 위해 매크로 (처음부터 올바르지 않음)를 선택하십시오.
당신은 그것이 "무엇이든"하지 않는다고 말합니다 - 당신은 무엇을 기대합니까? 아마도 게시 된 샘플 다음에 코드가 더있을 것입니다. FunctionGetFileName이란 무엇입니까? –
예상되는 결과는 다음 줄 FunctionGetFileName이 실행되고 문서를 통해 계속 실행됩니다. FunctionGetFileName은 FilePath에서 FileName을 찾은 프로그램의 다른 곳에서 작성한 함수이지만 실행하지 않은 코드가 더 있습니다. 그러나 더 많은 실험을 통해 문제의 범위를 좁히고 이에 따라 문제를 수정했습니다. – soytsauce
어떤 Excel 버전입니까? Ctrl + Shift + F를 사용하여 2007 년 나를 위해 작동합니다. –