カテゴリー
wsh-jscript

VBA100本ノックの100本目をやってみた

VBA100本ノックの100本目をやってみた。

VBAで作ったみた。
Sub Macro1()
    'IEを起動する
    Dim objIE As InternetExplorer
    Set objIE = New InternetExplorer
    'IEの位置・大きさの設定、IEを表示
    objIE.Top = 10: objIE.Left = 6160: objIE.Width = 800: objIE.Height = 900
    objIE.Visible = True
    
    objIE.Navigate "https://excel-ubara.com/vba100sample/vba100list.html"
    Call untilReady(objIE)
    'VBA100本ノック目次のtableをとってくる
    Set objTable = objIE.Document.getElementsBytagname("table")
    x_html = objTable(0).outerHTML
    'IEを閉じる
    objIE.Quit
    Set objIE = Nothing
    
    'クリップボードにコピー
    Dim CB As New DataObject
    CB.SetText x_html
    CB.PutInClipboard
    'Sheet1にペーストする
    Set oSheet = ThisWorkbook.Worksheets(1)
    oSheet.Range("A1").PasteSpecial Paste
End Sub
Sub untilReady(objIE As Object)
    Do While objIE.Busy = True Or objIE.ReadyState <> 4
        DoEvents
    Loop
End Sub

DOSバッチ・VBScriptで作ったみた。
<!-- :
@%windir%\System32\cscript.exe //nologo "%~f0?.wsf"
@exit /b %errorlevel%
-->
<job>
<script language="VBScript">
	'このファイルのあるディレクトリをカレントディレクトリに
	Set objShell = Wscript.CreateObject("WScript.shell")
	Set fso      = Wscript.CreateObject("Scripting.FileSystemObject")
	CurrentDirectory = fso.getParentFolderName(WScript.ScriptFullName)

	'IEを起動する
	Dim objIE
	Set objIE = WScript.CreateObject("InternetExplorer.Application")

	'IEの位置・大きさの設定、IEを表示
	objIE.Top = 10: objIE.Left = 6160: objIE.Width = 800: objIE.Height = 900
	objIE.Visible = True

	objIE.Navigate "https://excel-ubara.com/vba100sample/vba100list.html"
	Call untilReady(objIE)
	'VBA100本ノック目次のtableをとってくる
	Set objTable = objIE.Document.getElementsBytagname("table")
	x_html = objTable(0).outerHTML
	'IEを閉じる
	objIE.Quit
	Set objIE = Nothing

	'クリップボードにコピー
	objShell.Exec("clip").StdIn.Write x_html

	'Excel起動
	Set oXlsApp = WScript.CreateObject("Excel.Application")
	'Excelの位置・大きさの設定、Excelを表示
	oXlsApp.Top = 10: oXlsApp.Left = 4460: oXlsApp.Width = 600: oXlsApp.Height = 400
	oXlsApp.Visible = True

	'新規にブックを作成
	Set objWorkbook = oXlsApp.Workbooks.Add
	'Sheet1にペーストする
	Set oSheet = objWorkbook.Worksheets(1)
	oSheet.Range("A1").PasteSpecial Paste
	
	'ブックを名前をつけて保存
	oXlsApp.DisplayAlerts = False
	objWorkbook.SaveAs(fso.BuildPath(CurrentDirectory,"test.xlsx"))
	oXlsApp.DisplayAlerts = True

	'Excelを閉じる
	oXlsApp.Quit
	Set oXlsApp = Nothing


Sub untilReady(objIE)
	'IEがページをロードし終えるのを待つ
	Do While objIE.Busy = True Or objIE.ReadyState <> 4
	WScript.Sleep 1000
	Loop
End Sub

</script>
</job>

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください