2014-09-01 8 views
0

불행히도 내 문제에 대한 적절한 해결책을 찾을 수 없습니다.VBA - 개체 IE (파일 URL을 알 수 없음) 단추 클릭 후 파일을 저장하는 방법

웹 사이트에서 파일을 다운로드하고 싶습니다. 다운로드를 원하는 항목을 지정하고 버튼을 클릭하면 브라우저에 "다른 이름으로 저장"대화 상자가 나타납니다.

지금까지 설정을 관리하고 InternetExplorer.Application을 통해 VBA의 버튼을 클릭하고 요소 및 태그별로 소스 코드를 탐색했습니다. 정확한 문제는 지금 : 어떻게 파일을 저장할 수 있습니까? 파일 URL은 (적어도 나와 VBA 스킬의 경우에는) 알 수 없습니다. "SendKeys-Way"(Save-As-Dialue가 보안과 관련되어 있기 때문에 작동하는지 여부는 확실하지 않음)는 코드가 자동화되어 실행되고 다운로드가 수행되지 않으므로 사용하고 싶지 않습니다. 며칠 동안 통제되어야한다.

이 작업을 수행하는 데있어 두 가지 아이디어가 있습니다. 1.) InternetExplorer.Application에서 "자동 저장"을 활성화하는 방법을 찾습니다 (아직 찾을 수 없음). 2.) 어떻게 든 클릭 한 후에 Internet Explorer로 보낼 파일 URL을 가져 오는 방법을 찾습니다.

입니다 지금까지 가지고 코드 : 내 두 개의 아이디어 중 하나가 어떻게 어쩌면 일을하고 수 있다면

Dim sStart As String, sEnd As String 
sStart = "01.08.2014" 
sEnd = "31.08.2014" 

Dim IEApp As Object 
Dim IEdoc As Object 

Set IEApp = CreateObject("InternetExplorer.Application") 

IEApp.Visible = False 
IEApp.Navigate "https://www.regelleistung.net/ip/action/abrufwert" 

Do: Loop Until IEApp.Busy = False 
Set IEdoc = IEApp.Document 
Do: Loop Until IEdoc.ReadyState = "complete" 

Dim myURL As String 
Dim Datum As String 
Dim text As String 
Dim zeile As String 
Dim i As Integer, iFiles As Integer 
Dim z As Long, lztZeile As Long 
iFiles = 0 

Dim WinHttpReq As Object 
Set WinHttpReq = CreateObject("Microsoft.XMLHTTP") 

    With IEdoc 
    .getElementByID("label.von").Value = sStart 
    .getElementByID("label.bis").Value = sEnd 
    .getElementByID("uenbId").Value = "jlhPZzcrHoI=" 

    For i = 0 To .getElementsByTagName("input").Length - 1 
     If .getElementsByTagName("input").Item(i).getAttribute("value") = "anzeigen" Then 
      .getElementsByTagName("input").Item(i).Click 
      Exit For 
     End If 
    Next 
    End With 

그래서 ... 사람이 나를 알 수 있습니까? 아니면 제가 생각하지 못한 세 번째 방법이 있습니까? 정확한 파일 URL을 모르면 복잡해 보입니다./

미리 감사드립니다.

+0

당신이 URL이 당신과 VBA에 알 수없는 뜻 시도 웹 사이트에있는 링크에 액세스하려는 경우. URL이 알려지지 않은 경우 어떻게 탐색 할 수 있습니까? : S –

+0

https://www.regelleistung.net/ip/action/abrufwert "Herunterladen"의 확인란을 선택하고 "anzeigen"을 클릭하면 파일 저장 대화 상자가 바로 나타납니다. 따라서 다운로드 할 파일의 URL을 알 수 없습니다 (또는 가져 오는 방법을 모르는 방식으로 탐색기로 보냄). – frrrt

답변

0

이이

For Each link In IEApp.Document.links 
    If InStr(link, "http://") > 0 Then ' when http:// tags are found ' use link.innerhtml for html text 
     ' send the link to your download sub routine... 
     download_link(link) 
    End If 
Next link 
+0

문제는 파일 다운로드 URL이 HTML 소스 코드로 작성되지 않았기 때문입니다. 단추를 클릭 한 다음 링크가 내 브라우저로 전송되면 파일 URL을 표시하지 않고 즉시 파일 저장 대화 상자가 표시됩니다. – frrrt