2014-07-21 5 views
0
Private Sub CommandButton1_Click() 
     ... 
     Set wb = Workbooks.Open(Filename:="C:\book1.xls") 
     If MsgBox("Please Review the Transmittal sheet, if satisfied click Yes to send, No to cancel." & vbCrLf & "Transmittal Number: " & Transm, vbYesNo) = vbNo Then 
     ... 
End Sub 

문제는 다음과 같습니다. 다른 통합 문서 내에서 통합 문서를 열려고합니다. 두 번째 통합 문서는 열리지 만 특정 지점에서만 열립니다. 마치 화면이 무언가를 기다리는 것처럼 흰색입니다.Excel : 통합 문서 열기

예 또는 아니요를 선택하고 하위 루틴을 완료하면 내 코드가 msgbox 프롬프트로 다음 행으로 이동하고 두 번째 통합 문서에서 해당 데이터를 완전히 표시합니다. 서브 루틴 내에서 호출 될 때 서브 루틴이 실행되지 않을 때 제대로 열리지 않습니다.

어떤 아이디어가 있습니까?

전체적으로 나는 다음과 같은 시나리오를위한 해결책을 찾기 위해 노력하고 있습니다. 사용자가 엑셀 통합 문서를 열고 시트에서 사용자 양식을 여는 버튼을 클릭합니다. 사용자는 콤보 상자에서 일부 정보를 선택하고 이러한 선택에 따라 Excel 시트에 상대 데이터를 채 웁니다. 일단 사용자가 채우면 단추를 클릭하여 Excel 통합 문서의 정보를 기반으로 보고서를 생성합니다. 전송되기 전에 사용자는 Excel 통합 문서에서 데이터가 올바른지 확인하고 확인해야하므로 msgbox가이를 요구하는 메시지가 표시됩니다. 데이터가 맞으면 예를 클릭하고 그렇지 않으면 예를 클릭합니다. 그러나 msgbox 및 사용자 양식을 사용하면 Excel 통합 문서에 액세스 할 수 없습니다. 내 생각은 새 통합 문서를 열고 현재 통합 문서에서 데이터를 복사하여 사용자가이를 볼 수있게하는 것이 었습니다. 어쩌면 당신은 이것을하는 더 좋은 방법이있을 것입니다.

원본 코드는 내 것이 아니므로 버그 만 고치는 것입니다.이 특정 버그는 사용자 폼과 msgbox로 인해 Excel 워크 시트에 집중할 수 없다는 것입니다.

무엇인지 정확한 문제가 있지만, 예를 프롬프트하려면/없음 시트가있는 후 "읽기"확인
+0

문제가 무엇인지 잘 모르겠습니다. 그 말을 바꿀 수 있습니까? – Sifu

+0

"아래"가 아니라 "끝날 때까지"라고 생각합니다. –

+0

Doug, Sifu - 나는 나의 의미를 명확하게하기 위해 질문을 편집했다.고마워 –

답변

0

되지 않음 : VB의 "에서 ThisWorkbook"에있는

매크로 # 1 (편집기) :

Private Sub Workbook_Open() 
Sheets("Transmittal sheet").Activate 'or whatever the sheet's name 
End Sub 

이렇게하면 통합 문서를 열 때 사용자가이 워크 시트를 강제로 화면에 표시합니다. 다음, '다시 어떤 시트 이름/번호 ("송부 시트"(시트 X)에 위치) 매크로 # 2 : 사용자가 자리를 비울 워크 시트에서 이동하려고 할 때이 메시지가 표시됩니다

Private Sub Worksheet_Deactivate() 
    Set wb = Workbooks.Open(Filename:="C:\book1.xls") 
    If MsgBox("Please Review the Transmittal sheet, if satisfied click Yes to send, No to cancel." & vbCrLf & "Transmittal Number: " & Transm, vbYesNo) = vbNo Then 
End Sub 

. 대안은 상황이 어떻게 진행되는지에 따라 workbook_beforeClose 아래에 두 번째 매크로를 배치하는 것입니다. 다시 한 번 정확히 달성하고자하는 것이 무엇인지 명확히 할 수 있다면 더 좋습니다.

+0

실생활에서 새로운 워크 시트가 코드 내에서 만들어 져야하고 매크로가 없어서 안녕하세요. 내가 필요한 것을 더 잘 설명하는 질문을 편집했습니다. 도와 주셔서 감사합니다. –

+0

편집 된 섹션을 기반으로 워크 시트를 표시하면서 사용자 서식을 열어두기를 원한다고 가정합니다. 이것을 3 개의 섹션으로 나누는 것이 좋습니다 - 첫 번째 섹션은 양식을 표시하고 데이터를 저장하는 것으로 구성됩니다. 두 번째 섹션은 양식을 닫고 보고서 워크 시트를 가져오고, 세 번째는 msgbox/inputbox로 확인하고 데이터가 변경되어야하는 경우 사용자 양식을 다시 불러옵니다 (첫 번째 섹션) – Alex

+0

Unforunately Alex, 주요 재 작성, 내가 말했듯이 나는 초기 코딩을하지 않았다. 자체적으로 새로 추가 된 통합 문서에 현재 통합 문서를 표시 할 수 있기를 기대했지만 새로운 또는 기존의 모든 통합 문서는 하위 루틴이 완료 될 때까지 표시되지 않습니다. –

0

적합한 솔루션을 찾을 수 없습니다. msgbox가 완전히 잠기고 새로운 워크 시트를 볼 수 없었습니다.

그래서 제가 생각해 낸 문제는 현재 워크 시트를 PDF로 내보내고 표시하는 것이 었습니다.

Dim pdfFile As String 
    pdfFile = Get_Temp_File_Name(sExtensao:="pdf") 

    ThisWorkbook.ExportAsFixedFormat _ 
    Type:=xlTypePDF, _ 
    Filename:=pdfFile, _ 
    Quality:=xlQualityStandard, _ 
    IncludeDocProperties:=True, _ 
    IgnorePrintAreas:=False, _ 
    OpenAfterPublish:=True 
    ' Allow time for PDF to be created and loaded 
    Application.Wait (Now + TimeValue("0:00:10")) 
GoTo PreviewSkip 

TrapPreview: 
    MsgBox Err.Description 

PreviewSkip: 

If MsgBox(... 

나는 Excel Tilte Set의 코드를 사용하여 pdf 확장명으로 임시 파일 이름을 생성합니다.

누구나 입력 해 주셔서 감사합니다. 짐

관련 문제