アプリ版:「スタンプのみでお礼する」機能のリリースについて

これは、以前ここで教示していただいたWEBからデータを取り出すVBAの一部です。
日付を入力し、その都度呼び出すWEBページを指定するものです。

--------------
myDate = InputBox("オープンする日付を「月/日」のように入力してください。", _
  "日付の入力", Format(Date, "m/d"))
 myURL = "0062/0062" & Format(Split(myDate, "/")(0) * 1, "00") & _
  Format(Split(myDate, "/")(1) * 1, "00")

 Connection_URL = "http://***/" & myURL & ".html"

-----------------
これは日付の当てはめにより(1/10の場合)
http://***/0062/00620110.htmlとなるようです。


そこで今回新たに指定したいurlは
http://***/guid/?datest=2011-01-10&ch=109

というものです。この中の-01-10の部分を日付指定により可変としたいのですが
ハイフンがはさまるため上記のVBAを変える必要があるようです。

VBAは初心者のため、元記述を色々書き換えて見たのですがうまくゆきません。
なお、chの部分も変えるとしたらをあわせて、アドバイスをよろしくお願いします。

A 回答 (12件中11~12件)

今回の直接のエラーの原因は、「.Refresh BackgroundQuery:=False」の部分のはずです。

私が、ちょっと洒落たことをしようとしたのが原因です。

しかし、それでエラーが返らなくても、QueryTables のVBAでは、サイトに訪れた人の情報を与えないので、取れないことがあります。

それと、良く分かりませんが、文字コードが単純ではないようです。教えて!goo などは、構造はものすごく複雑ですが、文字コードは単純です。目的の所は、Webサイトの構造自体は単純ですから、取得自体は、何ら問題ありません。

それで、今までのコードは、前回もちょっと書いたと思いますが、ほとんど定数以外は参考にはしません。

今回は、UserForm にまとめると良いと思います。
>※arrMenu = Array…は不要なものです。

もし使うなら、本来、これは、UserForm上のComboBox  などを利用すると良いと思います。そこに、CommandButtonでアクセスするようにして、もう一つのComboBox を設けて、日付の範囲を予め作ってしまってもよいのではないかと思います。

InputBox をあれこれいじってみましたが、マウスだけで入力も出来ません・InputBox は使いづらいです。

> .WebTables = "9"
私もここが分かりません。Webクエリを記録マクロで取っても、それが出てきませんでした。
一覧のリストが取れればそれで良いような気がします。

しばらくお待ちください。一応、変更は可能ですが、こちらで、一旦レイアウトは決めされていただきます。
    • good
    • 0
この回答へのお礼

お手数をおかけします。
コードについては色々な方法があると思うので、目的のデータが取れればいいので、従来のコードは無視していただいてけっこうです。
rrMenu の部分は私もcomboがいいかなと思って前回も提案しましたが、今回も109に相当する部分はそれを使いたいと思っています。
内容は123,108,109,110,201,202,204,205からの選択になり、123をデフォルトにしたいと思っています。
日にちは入力のほうがよさそうですが、comboのほうが適していればそれでもかまいません。
ただ、デフォルト表示はリアル日付(その日の日付)がやりやすいです。
元サイトは日付もコンボになっていますが、1-31までが長すぎるのと月末から翌月1日に移るのにいつもめんどうに感じています。

よろしくお願いいたします。

お礼日時:2011/01/10 07:00

>一応urlの表示はうまくいっている用なのですが、「

http://**」は開けません。
>インターネットに接続できません」とメッセージが出ちゃうんです。

たぶん、URLが、間違っているには違いないとは思います。
http://***/guid/?datest=2011-01-09&ch=109.html
例えば、貼りつけた後に、自動的に別のコードに変わっているとか、確認してください。

たぶん、どこかの放送の番組表のようですが、こちらでは、今のところ、調べようがありません。自己解決を望みますが、試せれば、こちらでチェックします。

お勧めしませんが、Google の短縮URLを使えば、後で消えてしまいますから、それを使ってもよいと思います。(たぶん、クレームがついた時には、もうURLは役に立たなくなっています。)

Google URL Shortener
http://goo.gl/
そこで生成されたを貼り付けてもよいです。2時間から、1日、1週間、ひと月、また恒久的なものがあります。
教えて!goo のURL http://goo.gl/qz5H7 (11/02/09 まで有効)

なお、#1のお礼欄で書かれたマクロに関しては、はっきりと明言できませんが、こういうスタイルにしたほうがよいです。

  ActiveSheet.QueryTables(1).Delete
 ActiveSheet.Range("A1").CurrentRegion.ClearContents
 With ActiveSheet.QueryTables.Add(Connection:= _
  "URL;" & Connection_URL, Destination:=Range("A1"))
  .WebFormatting = xlWebFormattingNone
  .WebTables = "9"
  .Refresh BackgroundQuery:=False
End With

#6129006 昨年の8月のご質問をひと通りざっと読みましたが、ずいぶん長く続いたようで、今回の流れの一部は、そこからのようです。そのスレのNo.29は同意しますが、私は、あまり質問者さんのレベルには斟酌を加えずに、フリーで許される範囲でコードを書きます。しかし私は、せいぜい数回程度の返事で、最近は元気はありません。特に、こちらのカテゴリでは、トラブルが多発したせいで、あまり書きません。
    • good
    • 0
この回答へのお礼

もう一度最初から整理させていただきます。

下記は現在使用しているVBAです
※別のurlから取り込みたいために
それに適した記述に変更したいと考えています。
下記のurlはhttp://www.***/0062/00620109.html
です。
直したい別のurlは
http://www.***/?datest=2011-01-11&ch=109
のような記述になります。

-------------------
Sub Using_Web_query30A()
Dim arrMenu As Variant
Dim myDate As String
Dim myURL As String
Dim Connection_URL As String

arrMenu = Array(70, 80, 32, 62, 101, 102, 90, 120, 40, 22, 31)
myDate = InputBox("オープンする日付を「月/日」のように入力してください。", _
"日付の入力", Format(Date, "m/d"))
myURL = "0062/0062" & Format(Split(myDate, "/")(0) * 1, "00") & _
Format(Split(myDate, "/")(1) * 1, "00")

Connection_URL = "http://***/" & myURL & ".html"
Columns(1).ClearContents
With ActiveSheet.QueryTables.Add(Connection:= _
"URL;" & Connection_URL, Destination:=Range("A1"))
.WebFormatting = xlWebFormattingNone
.WebTables = "9"
.Refresh BackgroundQuery:=False
End With
End Sub


※arrMenu = Array…は不要なものです。
------------------------
ご指示いただいたVBAで発生した、エラーメッセージをじっくり見る限り
URLはしっかりと組成されていました。
WebTables = "9"というのは数字の持つ意味がよくわかりませんが
新URLだと変える必要があるかと思います。

gooのショートアドレスってなかなかいいですね。
早速2時間のアドレスを作りました
よろしくお願いいたします

お礼日時:2011/01/09 18:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!