2014-12-02 2 views
0

웹 페이지가 있으며 해당 웹 페이지에 텍스트 파일이 있습니다. 텍스트 파일 이름은 매주 변경됩니다.웹 페이지에서 텍스트 파일을 검색하고 해당 텍스트 파일의 데이터를 vba를 사용하여 Excel로 가져옵니다.

웹 페이지에서 텍스트 파일을 검색하고 Excel 시트에 콘텐츠를 다운로드하려면 어떻게해야합니까? 어떤 포인터를 시작할 것인가? 주어진 URL을 사용하여 웹 페이지를 탐색하는 방법을 알고 있습니다.

문제는이 텍스트 파일의 URL을 알지 못합니다 (매주 변경되기 때문에). 어떻게 알 수 있습니까? 여기

http://usda.mannlib.cornell.edu/MannUsda/viewDocumentInfo.do?documentID=1048

는 웹 페이지의 링크입니다. 여기서 txt 파일을 다운로드해야합니다 (자르기 진행, 11.24.2014 [txt]). 제발 도와주세요. 매크로 기록

: (Microsoft 인터넷 라이브러리를 제어에서 ShDocVw.InternetExplorer 객체)은 VBA에서 제어 인터넷 익스플로러의 인스턴스에서 웹 페이지를 열어

Sub Macro4() 
 
With ActiveSheet.QueryTables.Add(Connection:= _ 
 
     "URL;http://usda.mannlib.cornell.edu/usda/current/CropProg/CropProg-11-24-2014.txt" _ 
 
     , Destination:=Range("$A$1")) 
 
     .CommandType = 0 
 
     .Name = "CropProg-11-24-2014" 
 
     .FieldNames = True 
 
     .RowNumbers = False 
 
     .FillAdjacentFormulas = False 
 
     .PreserveFormatting = True 
 
     .RefreshOnFileOpen = False 
 
     .BackgroundQuery = True 
 
     .RefreshStyle = xlInsertDeleteCells 
 
     .SavePassword = False 
 
     .SaveData = True 
 
     .AdjustColumnWidth = True 
 
     .RefreshPeriod = 0 
 
     .WebSelectionType = xlEntirePage 
 
     .WebFormatting = xlWebFormattingNone 
 
     .WebPreFormattedTextToColumns = True 
 
     .WebConsecutiveDelimitersAsOne = True 
 
     .WebSingleBlockTextImport = False 
 
     .WebDisableDateRecognition = False 
 
     .WebDisableRedirections = False 
 
     .Refresh BackgroundQuery:=False 
 
    End With 
 
End Sub

+0

수동으로 수행하는 방법을 정확하게 설명해야합니다. 해당 페이지의 어떤 링크가 필요합니까? –

+0

파일을 다운로드하고 싶습니다 (자르기 진행, 11.24.2014 [txt]). 수동으로,이 웹 사이트를 탐색하고 작물 진행률, 11.24.2014 txt 파일을 선택하십시오. 그런 다음 새 페이지를로드합니다. 해당 페이지의 정보를 복사하여 사용합니다. 나는 매크로 기록을 시도했다. 위의 코드를 게시합니다. – user2390751

+0

페이지의 html 코드를 가져 와서 구문 분석 할 수 있습니다. 링크를 찾으려면 inner-html = "txt"(txt)로 링크를 가져오고이 링크의 href를로드하십시오. VBA에서 MSXHR Reguest를 볼 때 html 페이지를 볼 수 없다면. –

답변

0

시작. InternetExplorer 객체에는 웹 페이지의 모든 HTML 태그를 포함하는 DOM (Document Object Model)을 포함하는 'document'멤버가 있습니다. DOM을 사용하려면 MSHTML 라이브러리를 사용하십시오.

DOM에서 "txt"라는 텍스트가 포함 된 앵커 요소를 검색 할 수 있습니다. document.SelectNodes()에서 XPath 쿼리로이 작업을 수행 할 수 있습니다. XPath를 사용하지 않으려면 document.all의 요소를 반복하거나 GetElementsByTagName()을 사용할 수 있습니다.

또는 텍스트 파일에 대한 링크가 항상 document.getelementsbytagname()에 의해 반환 된 배열의 같은 위치에 있도록 페이지의 링크가 매번 추가되거나 제거되지 않습니다. 에이"). 나는. 항상 페이지의 13 번째 앵커 태그 인 경우 document.GetElementsByTagName ("a") (12)와 같은 것을 사용하십시오.

텍스트 파일에 대한 하이퍼 링크에 대한 참조를 얻으면 URL은 해당 앵커 요소의 href 속성에 있습니다.

+0

안녕하세요 .. .. 그것을 해결 .. A 태그를 검색 한 다음 element.innerText = "txt"를 검색하여 적절한 태그를 찾았습니다. – user2390751

관련 문제