• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Webクエリで困っています)

Webクエリで困っています

このQ&Aのポイント
  • WebクエリでセルA1に入力したURLを読み込み、表を取り込んで必要な箇所をコピーしたいですが、エラーが発生しています。
  • マクロを使用して、Webクエリで特定のURLから表を取り込む方法を試していますが、エラーが発生しています。
  • Webクエリを使用してセルA1に入力したURLから表を取り込むためのマクロを作成しましたが、エラーが発生しています。

質問者が選んだベストアンサー

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.2

下記で試してみて。 URL の簡易チェックで Like 演算子を使うため、大小文字の統一の 必要があり、Lcase 関数で URL を小文字化してたのが原因かも。 Sub クエリで取得()   Dim sConnectionStr As String   Dim sh     As Worksheet      Set sh = Worksheets("クエリで取得")      sConnectionStr = Trim$(sh.Range("A1").Text)      If Len(sConnectionStr) = 0 Then Exit Sub      If LCase$(sConnectionStr) Like "http://*" Or _     LCase$(sConnectionStr) Like "https://*" Then          sh.Rows("2:" & CStr(sh.Rows.Count)).ClearContents     sConnectionStr = "URL;" & sConnectionStr     With sh.QueryTables.Add(Connection:=sConnectionStr, _                 Destination:=sh.Range("A2"))       .FillAdjacentFormulas = False       .PreserveFormatting = False       .RefreshStyle = xlOverwriteCells       .AdjustColumnWidth = False       .RefreshPeriod = 0       .WebSelectionType = xlEntirePage       .WebFormatting = xlWebFormattingNone       .WebPreFormattedTextToColumns = True       .WebConsecutiveDelimitersAsOne = True       .WebSingleBlockTextImport = False       .WebDisableDateRecognition = True       .WebDisableRedirections = False       .Refresh BackgroundQuery:=False       .Delete     End With     sh.Range("A19:Q54").Copy   Else     MsgBox "A1 セルが未入力か URL として不適切", vbInformation   End If End Sub

974tkqkl
質問者

お礼

いやっ!できました!!! 感動です。イメージ通りのものができました。 感謝!感謝!感謝!です。 いろいろご親切にこちらのわがままを聞いて頂いて恐縮です。ありがとうございました。 いつも、『新しいマクロの記録』から作成して、不要な部分を削除する方法で作っていました。今回変数をはじめて知りました。いろいろなことができそうですね。難しそうですが、勉強してみます。 ありがとうございましたm(__)m

その他の回答 (1)

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.1

QueryTables.Add(Connection:=~ に URL を指定する場合、URL であることを 表す "URL;" というキーワードが必要(下記ソースの※のライン)です。 また、不要と思われる各種プロパティー設定は多少整理しました。 下記ソースを VBE にコピー&ペーストすると http:// の部分で余計な「?」 記号までペーストされますが、削除して下さい。 Sub クエリで取得()      Dim sConnectionStr As String   Dim sh       As Worksheet      ' WEB クエリを作成するシートを参照   Set sh = ActiveSheet ' または Worksheets("シート名")      ' 前処理:余計なホワイトスペース等を除去し、Like 演算子で比較   ' できるように小文字化しておく   sConnectionStr = Trim$(LCase$(sh.Range("A1").Text))      ' A1 にはデータが入力されていて、かつ http:// で始まっているか   If Len(sConnectionStr) And sConnectionStr Like "http://*" Then          ' 前処理:一応シートをクリアした方が良いでしょう     sh.Rows("2:" & CStr(sh.Rows.Count)).ClearContents          ' ※POINT: 接続文字列に URL であることを表すキーワードを付与     sConnectionStr = "URL;" & sConnectionStr          ' WEB クエリを作成する     With sh.QueryTables.Add(Connection:=sConnectionStr, _                 Destination:=sh.Range("A2"))       .FillAdjacentFormulas = False       .PreserveFormatting = False       .RefreshStyle = xlOverwriteCells       .AdjustColumnWidth = False       .RefreshPeriod = 0       .WebSelectionType = xlEntirePage       .WebFormatting = xlWebFormattingNone       .WebPreFormattedTextToColumns = True       .WebConsecutiveDelimitersAsOne = True       .WebSingleBlockTextImport = False       .WebDisableDateRecognition = True       .WebDisableRedirections = False       ' 実際にインポートするには Refresh メソッドを実行する       ' 今回はインポートが完了するまで待機する必要があるので、       ' BackgroundQuery は False にしておく       .Refresh BackgroundQuery:=False       ' WEB クエリを繰り返し更新する必要がなければ       ' 削除した方が省リソースです       .Delete     End With          sh.Range("A19:Q54").Copy        Else     MsgBox "A1 セルが未入力か URL として不適切", vbInformation   End If End Sub

974tkqkl
質問者

補足

Sub クエリで取得() ' ' クエリで取得 Macro ' マクロ記録日 : 2009/8/1 ユーザー名 : charlie ' Dim sConnectionStr As String Dim sh As Worksheet Set sh = Worksheets("クエリで取得") sConnectionStr = Trim$(LCase$(sh.Range("A1").Text)) If Len(sConnectionStr) And sConnectionStr Like "https://*" Then sh.Rows("2:" & CStr(sh.Rows.Count)).ClearContents sConnectionStr = "URL;" & sConnectionStr With sh.QueryTables.Add(Connection:=sConnectionStr, _ Destination:=sh.Range("A2")) .FillAdjacentFormulas = False .PreserveFormatting = False .RefreshStyle = xlOverwriteCells .AdjustColumnWidth = False .RefreshPeriod = 0 .WebSelectionType = xlEntirePage .WebFormatting = xlWebFormattingNone .WebPreFormattedTextToColumns = True .WebConsecutiveDelimitersAsOne = True .WebSingleBlockTextImport = False .WebDisableDateRecognition = True .WebDisableRedirections = False .Refresh BackgroundQuery:=False .Delete End With sh.Range("A19:Q54").Copy Else MsgBox "A1 セルが未入力か URL として不適切", vbInformation End If End Sub ------------------- 上記のように修正しましたが、 .Refresh BackgroundQuery:=Falseで黄色のエラーになります。 どうしたらよいでしょうか。 尚、http://をhttps://にしました。 宜しくお願いします。

関連するQ&A

専門家に質問してみよう