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

VBscriptでWebサイトから取得したtitleタグをテキストファイルに書き出すスクリプトを下記のとおり作成しました。titleタグ内のテキストを一次元配列にするスクリプトは別途作成しましたが、これをExcelのセルに書き込む方法がわかりません。ご存知の方教えてください。


--------
Option Explicit


Dim objIE
Dim objLink

Set objIE = CreateObject("InternetExplorer.Application")
objIE.Visible = True

'IEを開く
objIE.navigate "http://XXXXX.co.jp/"


'タイトルをテキストファイルに書き出す
OutputText objIE.document.Title



'テキストファイルへ出力
Function OutputText(ByVal strMsg)

Dim objFSO
Dim objText

'ファイルシステムオブジェクト
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
’テキストファイルを開く
Set objText = objFSO.OpenTextFile("C:\work\title.txt", ForAppending, True)

objText.write strMsg
objText.write vbCrLf

objText.close

'オブジェクト変数をクリア
Set objFSO = Nothing
Set objText = Nothing

End Function

A 回答 (3件)

まず、質問で掲示しているコードでは、途中でエラーになると思います。


それに、別に1次元の配列にしようが、あまり関係ないと思います。
>これをExcelのセルに書き込む方法がわかりません。
VBScriptのExcelに関わる所が分からないのでしょうか。VBScript よりは、Excel VBAのほうがインテリセンスなどもあって、楽だと思います。

'----------------------
'//GetTitle.VBS
Const fn ="C:\work\title.txt"
Dim objIE
'Dim objLink
Dim objFSO
Set objIE = CreateObject("InternetExplorer.Application")

objIE.Visible = True
'IEを開く
objIE.Navigate2 "https://google.co.jp/" 'グーグルで試してみました。

Do While objIE.Busy Or objIE.ReadyState <> 4
WScript.Sleep 500
Loop

'タイトルをテキストファイルに書き出す
strMsg = objIE.document.Title
Call OutputText(strMsg)
'テキストファイルへ出力
objIE.Quit
Set objIE=Nothing
''MsgBox "Finish"

Sub OutputText(ByVal strMsg)
Dim objFSO
Dim objText
Const ForAppending=8

Set objFSO = CreateObject("Scripting.FileSystemObject")
'テキストファイルを開く
Set objText = objFSO.OpenTextFile(fn,ForAppending , True)

objText.write strMsg
objText.write vbCrLf

objText.close

'オブジェクト変数をクリア
Set objText = Nothing
End Sub


'//Export2Excel.VBS
Const fn ="C:\work\title.txt"
Dim objFSO
Dim objText
Dim i
Dim xlApp, Bk
Set objFSO =CreateObject("Scripting.FileSystemObject")
Set objText = objFSO.OpenTextFile(fn)
Set xlApp =CreateObject("Excel.Application")
xlApp.Visible=True
Set Bk = xlApp.Workbooks.Add
With Bk.ActiveSheet
Do While objText.AtEndOfLine<> True
i=i+1
.Cells(i,1).Value = objText.ReadLine
Loop
End With
objText.Close
Set objText = Nothing
Set objFSO = Nothing
    • good
    • 0

書込み対象となるExcel ファイルに因りますが、例えばこのVBAが組み込まれているファイルのsheets(1)のセルに書き込みたいのであれば、


>'タイトルをテキストファイルに書き出す
>OutputText objIE.document.Title
の行われるタイミング(このコマンドの前後)で、
sheets(1).Cells(行番号,列番号)=objIE.document.Title
とするだけで(行番号,列番号)で指定されたセルに書き込むことは可能です。
※Range(アドレス)でも指定は可能です。
勿論、(行番号,列番号)は適時変化するようにしていないと同じセルに書き込むことになりますので、そこらへんはうまくやってください。
(既に開いている)別ファイルの場合は
Workbooks(”対象ファイル名”).sheets(1).Cells(行番号,列番号)=objIE.document.Title
とすれば、そのファイルへの書き込みも可能です。
このVBAがExcelファイルと全く関係ないのであれば、そのファイルをオブジェクトとして指定(作成)する必要があるので、難易度は高くなります。
    • good
    • 0

こんにちは



ググってみただけですが・・・
http://www.wannko.net/vbs/file/excel2.html
https://knowledge.reontosanta.com/archives/838
    • good
    • 0

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