Tôi chỉ tìm thấy chuỗi này khi tôi đang cố làm điều tương tự. Thật không may tôi đang ở trên một MAC, do đó, những câu trả lời không giúp đỡ. Với một chút nghiên cứu, tôi đã có thể làm cho nó hoạt động trong MAC Excel với module này:
Option Explicit
' execShell() function courtesy of Robert Knight via StackOverflow
' http://stackoverflow.com/questions/6136798/vba-shell-function-in-office- 2011-for-mac
Private Declare Function popen Lib "libc.dylib" (ByVal command As String, ByVal mode As String) As Long
Private Declare Function pclose Lib "libc.dylib" (ByVal file As Long) As Long
Private Declare Function fread Lib "libc.dylib" (ByVal outStr As String, ByVal size As Long, ByVal items As Long, ByVal stream As Long) As Long
Private Declare Function feof Lib "libc.dylib" (ByVal file As Long) As Long
Function execShell(command As String, Optional ByRef exitCode As Long) As String
Dim file As Long
file = popen(command, "r")
If file = 0 Then
Exit Function
End If
While feof(file) = 0
Dim chunk As String
Dim read As Long
chunk = Space(50)
read = fread(chunk, 1, Len(chunk) - 1, file)
If read > 0 Then
chunk = Left$(chunk, read)
execShell = execShell & chunk
End If
Wend
exitCode = pclose(file)
End Function
Function HTTPGet(sUrl As String) As String
Dim sCmd As String
Dim sResult As String
Dim lExitCode As Long
Dim sQuery As String
sQuery = "method=getMetadata&format=xml&fl=*"
sCmd = "curl --get -d """ & sQuery & """" & " " & sUrl
sCmd = "curl --get -d """ & sQuery & """" & " " & sUrl
sResult = execShell(sCmd, lExitCode)
' ToDo check lExitCode
HTTPGet = sResult
End Function
Function getISBNData(isbn As String) As String
Dim sUrl As String
sUrl = "http://xisbn.worldcat.org/webservices/xid/isbn/" & isbn
getISBNData = HTTPGet(sUrl)
End Function
Function getAttributeForISBN(isbn As String, info As String) As String
Dim data As String
Dim start As Integer
Dim finish As Integer
data = getISBNData(isbn)
start = InStr(data, info) + Len(info) + 2
finish = InStr(start, data, """")
getAttributeForISBN = Mid(data, start, finish - start)
End Function
Đây không phải là tất cả các công việc ban đầu của tôi, tôi dán nó lại với nhau từ một trang web khác, sau đó làm việc của riêng tôi. Bây giờ bạn có thể làm những việc như:
getAttributeForISBN("1568812019","title")
này sẽ trở lại tiêu đề của cuốn sách đó. Tất nhiên bạn có thể áp dụng công thức này cho tất cả các ISBN trong cột A để tra cứu nhiều tên sách, tác giả hoặc bất kỳ thứ gì.
Hy vọng điều này sẽ giúp người khác ra khỏi đó!
+1 cho ví dụ điển hình về việc tiêu thụ dịch vụ web! –
Chỉ là những gì tôi đang tìm kiếm! Tính năng không làm mới PowerPivot bị hỏng! ;) – LamonteCristo