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

いつもお世話になっております。

やりたいことはexcelで入力したURL一覧に対して
ソースを取得し、ある文字列が入っていたら
TRUE、入ってなければFALSEを特定のセルに表示にするというプログラムを組みたいのですが

以下サイトを参考に
http://otsukare-tion.com/2013/12/excel_vba01/

URL一覧からMETA情報を抽出してB列~に書き出す
という非常に惜しいサンプルコードを発見しました。

恐らく以下辺りを修正すれば

'title、description、keywords、H1を取得して出力
.Pattern = "<title>(.*?)</title>"
Set mc = .Execute(buf)
If mc.Count <> 0 Then url.Offset(0, 1) = mc(0).SubMatches(0)

ある文字列が入っていたら
TRUE、入ってなければFALSEを特定のセルに表示にするということができそうなのですが
VBのソースがイマイチ分かりません、、、

ご教示ください!!

質問者からの補足コメント

  • うーん・・・

    すいません、
    testという文字列が含まれているか、ソースコードでどうやって記述すれば良いか教えてほしいです、
    メソッドとか全く分からず、、、

    No.1の回答に寄せられた補足コメントです。 補足日時:2017/10/05 12:20

A 回答 (4件)

そうですよ。



正規表現で調べてください。
マッチのさせ方が分かります。

んで、マッチするなら、マッチした値を突っ込むのではなく、TRUE/FALSEという文字をセルに突っ込めばいいでしょう。
この回答への補足あり
    • good
    • 0
この回答へのお礼

ありがとうございます!

お礼日時:2017/10/06 09:47

こんにちは



>testという文字列が含まれているか、ソースコードでどうやって
>記述すれば良いか教えてほしいです、
文字列stringsの中に"test"が含まれているかどうか程度であれば
 InStr(strings, "test")
でも調べられます。
stringsの中の何文字目に"test"が出現するかが返されますので(無いときは0)、
 InStr(strings, "test") > 0
で判別できるでしょう。

stringsがHTMLソースのような場合、タグやその属性、あるいは表示されるテキストなどの全体が同等の文字列として単純に調べることになりますので、「〇〇は除きたい」というような複雑な検索を必要とする場合は、正規表現を利用した方が簡単になると思います。


以下は正規表現の簡単な説明です。(検索すればいろいろ見つかるはずです)
MSDN(わかりにくいけど本家なので)
https://msdn.microsoft.com/ja-jp/library/cc39240 …
その他(適当に)
http://www.officetanaka.net/excel/vba/tips/tips3 …
http://www.excel-ubara.com/excelvba4/EXCEL232.html
    • good
    • 0
この回答へのお礼

ありがとうございます!

お礼日時:2017/10/06 09:47

> testという文字列が含まれているか、ソースコードでどうやって記述すれば良いか教え


> てほしいです、

URL先の例では、特定のタグ内の情報を得たいから正規表現で行っていますが、
純粋にHTMLコード全体でtestという文字が含まれるかどうかというお話ならば
ANo.2のやり方で十分でしょう。

一応言っておくと、単純検索の場合、コメント行やタイトルにtestという文字があっても該当しますからね。
    • good
    • 0
この回答へのお礼

ありがとうございます!

お礼日時:2017/10/06 09:47

うーん。

リンク先の内容はちょっと意味が違うような気がしますね。

#2さんの解答が、正解なのですが、問題は、その検索単語が、どういった種類のものかということですね。いずれにしても、注意して行わないといけません。

例えば、以下のようなコードを、一つのサイトで延々とやったら、警察に掴まってしまいます。そうでなくても、ネットにまつわる警察の不当逮捕は、最近も起きています。証拠もなしに、警察が動き出してしまいます。最近では、そのようなことをした覚えがない女性が19日間の勾留の上、仮処分で釈放されたそうです。それも、犯人は、女子中学生のなりすましだったとか。

調べた方法は、Google で、"Excel"という単語で検索したサイトの一覧に、「表計算」という語を検索するという方法です。厳密に、内容を精査したわけではありません。
10個の中で、True 4個、False 6個という結果です。


Sub Main()
Dim c As Range
For Each c In Range("A1", Cells(Rows.Count, 1).End(xlUp))
 If c.Value Like "http*" Then
  c.Offset(, 1).Value = SearchTextinWeb(c.Value, "表計算")
 End If
Next
End Sub


Function SearchTextinWeb(ByVal strURL As String, ByVal sTxt As String)
  Dim objHTTP As Object
  Dim httpLog As String
  Dim ar As Variant
  Dim n As Variant
  On Error Resume Next
  Set objHTTP = New WinHttp.WinHttpRequest '("WinHttp.WinHttpRequest.5.1")
    
  objHTTP.Open "GET", strURL, False
  objHTTP.Send
 
  If objHTTP.Status = 200 Then
    httpLog = objHTTP.responseText
    If InStr(1, httpLog, sTxt, vbTextCompare) > 0 Then
     SearchTextinWeb = True
    Else
     SearchTextinWeb = False
    End If
  Else
    SearchTextinWeb = objHTTP.Status
  End If
  Set objHTTP = Nothing
  On Error GoTo 0
End Function
    • good
    • 0

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