2013-03-13 2 views
2

Я пытаюсь импортировать файл CSV из этого URL:VBA Вставка не .csv работает

http://www.redfin.com/stingray/do/gis-search?market=socal&region_id=11203&region_type=6&excl_ss=true&hoa=&max_listing_approx_size=&max_num_beds=&max_parcel_size=&max_price=300000&max_year_built=&min_listing_approx_size=&min_parcel_size=&min_price=50000&min_year_built=&num_baths=1.0&num_beds=1&open_house=&pkg=-&rd=&sf=1%2C2%2C3&sold_within_days=&status=1&time_on_market_range=30-&uipt=2&v=8&num_homes=500&sp=t&al=3&render=csv

Ниже код работает, когда я использую другой .csv URL, как этот: http://ichart.finance.yahoo.com/table.csv?s=AAPL&d=2&e=13&f=2013&g=d&a=8&b=7&c=1984&ignore=.csv

Но код не работает с более длинным URL. URL слишком длинный? Если да, есть ли обходной путь?

Вот мой текущий код:

Sub importCSV() 
    Dim URL As String 
    URL = "TEXT;http://www.redfin.com/stingray/do/gis-search?market=socal&region_id=11203&region_type=6&excl_ss=true&hoa=&max_listing_approx_size=&max_num_beds=&max_parcel_size=&max_price=300000&max_year_built=&min_listing_approx_size=&min_parcel_size=&min_price=50000&min_year_built=&num_baths=1.0&num_beds=1&open_house=&pkg=-&rd=&sf=1%2C2%2C3&sold_within_days=&status=1&time_on_market_range=30-&uipt=2&v=8&num_homes=500&sp=t&al=3&render=csv" 
    Application.DisplayAlerts = False 
    With ActiveSheet.QueryTables.Add(Connection:=URL, _ 
     Destination:=Range("A1")) 
     .Name = "test" 
     .FieldNames = True 
     .RowNumbers = False 
     .FillAdjacentFormulas = False 
     .PreserveFormatting = True 
     .RefreshOnFileOpen = False 
     .RefreshStyle = xlOverwriteCells 
     .SavePassword = False 
     .SaveData = True 
     .AdjustColumnWidth = True 
     .RefreshPeriod = 0 
     .TextFilePromptOnRefresh = False 
     .TextFilePlatform = 437 
     .TextFileStartRow = 1 
     .TextFileParseType = xlDelimited 
     .TextFileTextQualifier = xlTextQualifierDoubleQuote 
     .TextFileConsecutiveDelimiter = False 
     .TextFileTabDelimiter = False 
     .TextFileSemicolonDelimiter = False 
     .TextFileCommaDelimiter = True 
     .TextFileSpaceDelimiter = False 
     .TextFileColumnDataTypes = Array(1, 1, 1) 
     .TextFileTrailingMinusNumbers = True 
     .Refresh BackgroundQuery:=False 
    End With 
    Application.DisplayAlerts = True 
End Sub 

Matt

+0

вы можете проверить, если URL слишком Короче говоря, используя сокращенное URL (http://goo.gl/), попробуйте эту сокращенную версию, если ваш длинный URL: http://goo.gl/a7XCY. Я видел, как Excel искажает некоторые элементы длиной более 255 символов (например, ввод строки диапазона). Я бы не подумал, что они ограничивают это, поскольку URL-адреса могут быть длиннее 255 символов. –

+0

Кроме того, какая ошибка вы получаете с длинным URL-адресом? –

ответ

3

Попробуйте это:

With ActiveSheet.QueryTables.Add(Connection:= _ 
"URL;[your url goes here]", Destination:=Range("$A$1")) 
.Name = "home" 
.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 

Это хорошо работает для Excel 2010.

+0

Я пробовал свой код и делал эти изменения, используя длинный URL-адрес, который вы отправили. Он отлично работает для меня. – Octopus

+0

Это отлично работает! Спасибо. Есть ли способ разграничения запятой, text-to-columns? Он не разбивает импорт на столбцы. – user2113095

+0

вы можете запустить Macro recorder и записать меню «Данные в столбцы Excel», чтобы получить нужный код. –

Смежные вопросы