2017-03-31 10 views
0

私のMicrosoft Excelでこのマクロを実行しようとしているが、私はやるたびに、私はエクセルVBA - ビットコイン

実行時エラー「5」は、私が間違って何をやっている

取得? これは初めてのことです。

キーボードショートカットを実行するたびに、ブロックチェーンのWebサイトからデータを取得することが想定されます。それは、本質的に言うだけのコードです

..

1 USDは(またはコメントアウト).CommandType = 0ライン

Sub USD_to_BTC() 
' 
' USD_to_BTC Macro 
' Get the price of 1 btc if purchased by 1 USD 
' 
' Keyboard Shortcut: Ctrl+Shift+B 
' 
    With ActiveSheet.QueryTables.Add(Connection:= _ 
     "URL;https://blockchain.info/tobtc?currency=USD&value=1", Destination:=Range(_ 
     "$D$8")) 
     .CommandType = 0 
     .Name = "tobtc?currency=USD&value=1_1" 
     .FieldNames = True 
     .RowNumbers = False 
     .FillAdjacentFormulas = False 
     .PreserveFormatting = True 
     .RefreshOnFileOpen = False 
     .BackgroundQuery = True 
     .RefreshStyle = xlInsertDeleteCells 
     .SavePassword = False 
     .SaveData = True 
     .AdjustColumnWidth = True 
     .RefreshPeriod = 0 
     .WebSelectionType = xlAllTables 
     .WebFormatting = xlWebFormattingNone 
     .WebPreFormattedTextToColumns = True 
     .WebConsecutiveDelimitersAsOne = True 
     .WebSingleBlockTextImport = False 
     .WebDisableDateRecognition = False 
     .WebDisableRedirections = False 
     .Refresh BackgroundQuery:=False 
    End With 
End Sub 

答えて

0

削除この多くのBTC価値があります。

As this MSDN Postは、

あなたは、クエリテーブルまたはピボットテーブルキャッシュのためのquerytypeプロパティの値がxlOLEDBQueryある場合にのみ、CommandTypeプロパティを設定することができますについて説明します。

0

ここで起こって2つあります:

  1. あなたは、クエリのテーブルを追加し、種々の特性を設定しています。これらのプロパティの1つはCommandTypeであり、定数型のXlCmdTypeです。このプロパティを有効な値ではない0に設定しています。そのコード行をコメントアウト(または削除)するだけで済みます。これにより、コードをエラーなく実行できます。ただし、...

  2. この手順を実行するたびに、新しいクエリテーブルが追加されます。あなたがやろうとしていることは単にデータを更新することだけです。照会表は、ワークシートに追加されたら、あなたは単にデータをリフレッシュするには、このコードを実行することができます。

    Sub RefreshQueryTable() 
    
        ActiveSheet.QueryTables("tobtc?currency=USD&value=1_1").Refresh 
    
    End Sub 
    

を使用すると、キーボードショートカットを使用している場合は、ユーザーがショートカットを起動するかもしれませんが、覚えておいてくださいしたがって、ユーザーがクエリテーブルを含むシート上にない場合、このコードは失敗します。あなたが明示的に適切なシートを参照してくださいしたいと思う:

Sub RefreshQueryTable() 
    ThisWorkbook.Sheets("Sheet1").QueryTables("tobtc?currency=USD&value=1_1").Refresh 
End Sub 
+0

私は全体の3行は、あなただけの私の全体のコードの下に言及していることを追加してください?申し訳ありませんが、私はVBAの初心者です。私のコードでそれをどこに追加するかを考えようとすると、エラー9の問題が出ません。 – user6260366

+0

最初にBruceWayneのソリューションを適用してエラーを修正する必要があります(前述のポイント#1で説明しましたが、ワークシートにクエリテーブルが既に存在する場合は、コード全体の下に3行のコードを追加できます。メソッドの代わりにRefreshQueryTableを呼び出すようにキーボードショートカットを更新します。 –

0

は、try代わりにクエリテーブルのXHRを使用する:

Sub USD_to_BTC() 

    With CreateObject("MSXML2.XMLHTTP") 
     .Open "GET", "https://blockchain.info/tobtc?currency=USD&value=1", False 
     .Send 
     Range("D8").Value = .responseText 
    End With 

End Sub