2012-02-27 3 views
0

나는 필자가 필요로하는 큰 보고서를 게시하는 회사 사이트를 가지고 있습니다. 웹 페이지를 열어서 열 필요가있는 스프레드 시트에 대한 링크를 얻을 수 있지만 열린/저장/취소를위한 하나의 IE 팝업을 얻고 스프레드 시트를 열 때 클릭하면 두 번째 팝업이 나타납니다 (이 스프레드 시트가 확장명에 지정된 형식이 아닌 것을 말하는 엑셀에서 나온 것) "가능하다면 첫 번째 팝업을 멀리 떨어 뜨리는 방법을 알지 못한다. DisplayAlerts = False 인 경우,이 자동 프로젝트 시작 코드는 다음과 같습니다.프롬프트없이 ASP 사이트에서 스프레드 시트를 검색하려고 시도했습니다.

[편집] 편집 한 후 원래 코딩을 수정하여 가장 최근의 시도는 이것입니다. 나는 sendkey를 사용하여 첫 번째 파일 다운로드 팝업을 지나칠 수 있었고 현재 두 번째 팝업 처리를 위해 노력 중입니다. 초점을 다시 뛰어나다). sendkeys 부분을 바꾸는 것에 대한 모든 제안은 확실히 환영받을뿐만 아니라 초점을 반환하여 Excel에서 두 번째 팝업을 제어 할 수 있도록 조언합니다 (최선의 방법이라면). 업데이트 된 코드는 다음과 같습니다 : 당신은 당신의 코드에서 해당 메시지를 억제 할 수하지 않을거야

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _ 
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long 
Sub Automation() 

    Dim IeApp As Object 
    Dim IeDoc As Object 
    Dim URL, URL2 As String 

    Application.DisplayAlerts = False 

    URL = "https://companysite.com/directorypage/default.aspx" 
    URL2 = "https://companysite.com/directorypage/Reports/MyReport.aspx?Format=Excel" 
    Set IeApp = CreateObject("InternetExplorer.Application") 

    IeApp.Visible = True 
    IeApp.Navigate URL 

    While IeApp.Busy Or IeApp.ReadyState <> 4: DoEvents: Wend 
    IeApp.Document.All.Item("MainContent_btnAuthenticate").Click 
    While IeApp.Busy Or IeApp.ReadyState <> 4: DoEvents: Wend 

    Set IeApp = CreateObject("InternetExplorer.Application") 
    IeApp.Visible = False 
    IeApp.Navigate URL2 

    Do Until thewindow <> 0 'wait for the "File Download" popup window to appear 
     thewindow = FindWindow(vbNullString, "File Download") 
    Loop 

    SendKeys "{LEFT}" 
    Application.Wait Now + TimeValue("00:00:01") 
    SendKeys "{LEFT}" 
    Application.Wait Now + TimeValue("00:00:01") 
    SendKeys "{ENTER}" 

End Sub 
+0

수동 용 IE에서 요청할 때 당신이 얻을 무슨 파일 :'https://companysite.com/directorypage/Reports/MyReport.aspx?Format = Excel'. 이 파일은'.xls' 또는'.csv' 파일입니까? 네이티브? – JMax

+2

질문을 다시 읽었습니다. 첫 번째 팝업을 없애면 다음과 같은 결과를 얻을 수 있습니다. http://superuser.com/questions/246553/how-to-disable-file-download-popup-in-internet-explorer – JMax

+0

한 번에 한 가지씩지나 가기; 불행히도 회사 컴퓨터의 경우 신뢰할 수있는 목록에 추가하는 것을 포함하여 IE 설정을 변경할 수 없습니다. 마찬가지로, 나는 (또는 회사 시스템으로 시도 할 수도 없다) 레지스트리 항목을 편집 할 수 없다. 귀하의 첫 번째 질문에 관해서는 .xls입니다 -하지만, urldownloadtofile 메서드를 통해 다운로드하려고 시도했지만, 링크를 통해 (위)에서 빈 스프레드 시트 만 얻을 수 있습니다. 파일 다운로드 팝업에서 "열기"를 클릭하면 스프레드 시트의 실제 데이터가 다운로드됩니다. 그룹 정책에 대한 – Jon

답변

1

, 그것은 악성 파일로부터 피해를 방지하기 위해 사용자의 워크 스테이션에 대한 설정입니다.

사용자는 Windows 레지스트리를 편집하거나 그룹 정책 설정을 통해 제어해야합니다. http://support.microsoft.com/kb/948615

서버에서 생성 된 Excel 문서에서 이와 동일한 문제가 발생했습니다. 유일한 해결 방법은 Open XML SDK을 사용하여 파일을 만드는 것입니다.

편집 : 다시 질문을 읽고 첫 번째 팝업에 더 초점을 맞추었고 JMax 링크 응답 (How to disable file download popup in Internet Explorer?)을 수정해야합니다.

+0

+1 : –

0

존, 내 두 센트.

귀하의 PC에 대한 관리자 액세스 권한이있는 경우 JMax가 제안한 내용을 정리할 것입니다. 나는 당신이 무엇을하고 있는지를 알기 전까지 관리자가된다면 레지스트리 편집을 막을 것입니다.

사무실의 pc라고 말하면 레지스트리 편집은 옵션이 아닙니다. IT 부서에 연락해야합니다. 관리자로 PC에 로그인 한 다음 옵션을 해제하거나 제안 된 0으로 GP를 조정할 수 있습니다. 내 생각에 사무실 PC 일 경우 GP 만 변경하지 않고 관리자로 로그인하고 개별적으로 변경 작업을 수행합니다 (단, 해당 그룹의 유일한 회원이 아닌 경우). 기업 환경에서는 많은 사용자에게 영향을 미치기 때문에 GP를 통해 제거하는 것은 정말로 어렵습니다. 또한 사무실 PC 인 경우 귀하의 요청이 동의되지 않았을 수도 있습니다.

BTW, 내가 보는 것과, 귀하의 질문은 엑셀 문제 :

HTH되고 함께 할 수 없다

시드

당신은 단지 파일을 직접 다운로드 할 수
0

...

Private Declare Function URLDownloadToFile Lib "urlmon" Alias _ 
      "URLDownloadToFileA" (ByVal pCaller As Long, _ 
      ByVal szURL As String, ByVal _ 
      szFileName As String, ByVal dwReserved As Long, _ 
      ByVal lpfnCB As Long) As Long 

    Sub DownloadFile(sURL, sSaveAs) 
    Dim rv As Long 
     rv = URLDownloadToFile(0, sURL, sSaveAs, 0, 0) 
     If rv <> 0 Then 
      MsgBox "Error with download!" 
     End If 
    End Sub 

https가 문제가되는지 여부를 모릅니다.

시도하는 또 다른 것은 단지입니다 :

Workbooks.Open "https://companysite.com/directorypage/Reports/MyReport.aspx?Format=Excel"

+0

위의 설명을 참조하십시오. URLDownloadToFile을 사용하려고 할 때 게시 된 링크가있는 빈 스프레드 시트를 다운로드하기 만하면됩니다. 파일 다운로드 프롬프트에서 열기 또는 저장 버튼을 클릭하지 않으면 실제 데이터를 얻지 못하는 것입니다. 또한 위에서 언급 한 방식으로 통합 문서를 열려고하면 urldownloadtofile 메서드를 사용할 때와 동일한 빈 통합 문서를 제공합니다. – Jon

관련 문제