<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>VBScript &#8211; REONTOSANTA</title>
	<atom:link href="https://knowledge.reontosanta.com/archives/category/programming/vbscript/feed" rel="self" type="application/rss+xml" />
	<link>https://knowledge.reontosanta.com</link>
	<description>Collection of personal knowledge</description>
	<lastBuildDate>Fri, 30 Mar 2018 14:52:35 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	
	<atom:link rel='hub' href='https://knowledge.reontosanta.com/?pushpress=hub'/>
<site xmlns="com-wordpress:feed-additions:1">83369280</site>	<item>
		<title>VBScriptでAccessのデータを操作する</title>
		<link>https://knowledge.reontosanta.com/archives/841</link>
					<comments>https://knowledge.reontosanta.com/archives/841#respond</comments>
		
		<dc:creator><![CDATA[mogice]]></dc:creator>
		<pubDate>Mon, 15 Feb 2016 03:13:26 +0000</pubDate>
				<category><![CDATA[VBScript]]></category>
		<guid isPermaLink="false">http://knowledge.reontosanta.com/?p=841</guid>

					<description><![CDATA[VBScriptでAccessのデータを操作することができる。 前提&#46;&#46;&#46;]]></description>
										<content:encoded><![CDATA[<p>VBScriptでAccessのデータを操作することができる。</p>
<p>前提として[C:\Temp]にAccessデータベース[Test.accdb]を用意し、以下のテーブルを作成する。<br />
テーブル名：テーブル1<br />
フィールド名：カラム1（テキスト型）、カラム2（数値型）</p>
<p>&nbsp;</p>
<h2>データベースの接続と切断</h2>
<p>Accessデータベースへの接続と切断は以下のコードで実現できる。</p><pre class="urvanov-syntax-highlighter-plain-tag">'データベース接続
Set cn = CreateObject("ADODB.Connection")
cn.Open "Driver={Microsoft Access Driver (*.mdb, *.accdb)}; DBQ=C:\Temp\Test.accdb;"

'データベース開放
cn.Close
Set cn = Nothing</pre><p>&nbsp;</p>
<div class="knowl-content" style="margin-top: 40px;" id="knowl-4108240517"><script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8913642688016174" crossorigin="anonymous"></script><ins class="adsbygoogle" style="display:block;" data-ad-client="ca-pub-8913642688016174" 
data-ad-slot="4196732648" 
data-ad-format="auto"></ins>
<script> 
(adsbygoogle = window.adsbygoogle || []).push({}); 
</script>
</div><h2>レコードセットの取得</h2>
<p>以下のコードで対象テーブルのレコードセットを取得することができる。</p><pre class="urvanov-syntax-highlighter-plain-tag">'データベース接続
Set cn = CreateObject("ADODB.Connection")
cn.Open "Driver={Microsoft Access Driver (*.mdb, *.accdb)}; DBQ=C:\Temp\Test.accdb;"
'レコードセット取得
Set rs = CreateObject("ADODB.Recordset")
const adOpenKeyset = 1
const adLockOptimistic = 3
rs.Open "テーブル1", cn, adOpenKeyset, adLockOptimistic
'データの表示
rs.MoveFirst
Do Until rs.EOF
	MsgBox "カラム1[" &amp; rs.Fields(0) &amp; "]" &amp; vbCrLf &amp; "カラム2[" &amp; rs.Fields(1) &amp; "]"
	rs.MoveNext
Loop
'レコードセット開放
rs.Close
Set rs = Nothing
'データベース開放
cn.Close
Set cn = Nothing</pre><p>&nbsp;</p>
<h2>データの検索</h2>
<p>以下のコードで対象テーブルのレコードセットからデータを検索することができる。</p><pre class="urvanov-syntax-highlighter-plain-tag">'データベース接続
Set cn = CreateObject("ADODB.Connection")
cn.Open "Driver={Microsoft Access Driver (*.mdb, *.accdb)}; DBQ=C:\Temp\Test.accdb;"
'レコードセット取得
Set rs = CreateObject("ADODB.Recordset")
const adOpenKeyset = 1
const adLockOptimistic = 3
rs.Open "テーブル1", cn, adOpenKeyset, adLockOptimistic
'データの表示
rs.MoveFirst
Do Until rs.EOF
	'データ検索
	rs.Find "カラム2=200"
	If rs.EOF = False Then
		MsgBox "カラム1[" &amp; rs.Fields(0) &amp; "]" &amp; vbCrLf &amp; "カラム2[" &amp; rs.Fields(1) &amp; "]"
		rs.MoveNext
	End If
Loop
'レコードセット開放
rs.Close
Set rs = Nothing
'データベース開放
cn.Close
Set cn = Nothing</pre><p>&nbsp;</p>
<h2>データの更新</h2>
<p>以下のコードで対象テーブルのレコードセットのデータを更新することができる。</p><pre class="urvanov-syntax-highlighter-plain-tag">'データベース接続
Set cn = CreateObject("ADODB.Connection")
cn.Open "Driver={Microsoft Access Driver (*.mdb, *.accdb)}; DBQ=C:\Temp\Test.accdb;"
'レコードセット取得
Set rs = CreateObject("ADODB.Recordset")
const adOpenKeyset = 1
const adLockOptimistic = 3
rs.Open "テーブル1", cn, adOpenKeyset, adLockOptimistic
'データの表示
rs.MoveFirst
Do Until rs.EOF
	'データ検索
	rs.Find "カラム1='ccc'"
	If rs.EOF = False Then
		MsgBox "【更新前】" &amp; vbCrLf &amp; "カラム1[" &amp; rs.Fields(0) &amp; "]" &amp; vbCrLf &amp; "カラム2[" &amp; rs.Fields(1) &amp; "]"
		'データ更新
		rs.Fields(1) = 450
		rs.Update
		MsgBox "【更新後】" &amp; vbCrLf &amp; "カラム1[" &amp; rs.Fields(0) &amp; "]" &amp; vbCrLf &amp; "カラム2[" &amp; rs.Fields(1) &amp; "]"
		rs.MoveNext
	End If
Loop
'レコードセット開放
rs.Close
Set rs = Nothing
'データベース開放
cn.Close
Set cn = Nothing</pre><p>&nbsp;</p>
<h2>データの追加</h2>
<p>以下のコードで対象テーブルのレコードセットにデータを追加することができる。</p><pre class="urvanov-syntax-highlighter-plain-tag">'データベース接続
Set cn = CreateObject("ADODB.Connection")
cn.Open "Driver={Microsoft Access Driver (*.mdb, *.accdb)}; DBQ=C:\Temp\Test.accdb;"
'レコードセット取得
Set rs = CreateObject("ADODB.Recordset")
const adOpenKeyset = 1
const adLockOptimistic = 3
rs.Open "テーブル1", cn, adOpenKeyset, adLockOptimistic
'データの追加
rs.AddNew
'フィールドに値をセット
rs.Fields(0) = "eee"
rs.Fields(1) = 500
'データベース更新
rs.Update
'レコードセット開放
rs.Close
Set rs = Nothing
'データベース開放
cn.Close
Set cn = Nothing</pre><p>&nbsp;</p>
<div class="knowl-after-content-ad" style="margin-top: 40px;" id="knowl-2084276055"><script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8913642688016174" crossorigin="anonymous"></script><ins class="adsbygoogle" style="display:block;" data-ad-client="ca-pub-8913642688016174" 
data-ad-slot="2719999442" 
data-ad-format="auto"></ins>
<script> 
(adsbygoogle = window.adsbygoogle || []).push({}); 
</script>
</div><div class="knowl-after-content-relation" id="knowl-3385184080"><script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8913642688016174" crossorigin="anonymous"></script><ins class="adsbygoogle" style="display:block;" data-ad-client="ca-pub-8913642688016174" 
data-ad-slot="7848218644" 
data-ad-format="autorelaxed"></ins>
<script> 
(adsbygoogle = window.adsbygoogle || []).push({}); 
</script>
</div>]]></content:encoded>
					
					<wfw:commentRss>https://knowledge.reontosanta.com/archives/841/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">841</post-id>	</item>
		<item>
		<title>VBScriptでExcelを操作する</title>
		<link>https://knowledge.reontosanta.com/archives/838</link>
					<comments>https://knowledge.reontosanta.com/archives/838#respond</comments>
		
		<dc:creator><![CDATA[mogice]]></dc:creator>
		<pubDate>Mon, 08 Feb 2016 23:41:11 +0000</pubDate>
				<category><![CDATA[VBScript]]></category>
		<guid isPermaLink="false">http://knowledge.reontosanta.com/?p=838</guid>

					<description><![CDATA[VBScriptでExcelを操作することができる。 &#160; &#46;&#46;&#46;]]></description>
										<content:encoded><![CDATA[<p>VBScriptでExcelを操作することができる。</p>
<p>&nbsp;</p>
<h2>Excelの起動と終了</h2>
<p>Excelを起動して、終了するには以下のコードで実現できる。<br />
サンプルを実行するとExcelが起動して、3秒後に終了する。</p><pre class="urvanov-syntax-highlighter-plain-tag">' Excel起動
Set oXlsApp = CreateObject("Excel.Application")
If oXlsApp Is Nothing Then
	' Excel起動失敗
	MsgBox "Excel起動失敗"
Else
	' Excel起動成功
	' --Excel表示（falseにすると非表示にできる）
	oXlsApp.Application.Visible = true
	' --3秒待つ
	WScript.Sleep(3000)
	' --Excel終了
	oXlsApp.Quit
	' --Excelオブジェクトクリア
	Set oXlsApp = Nothing
End If</pre><p>&nbsp;</p>
<div class="knowl-content" style="margin-top: 40px;" id="knowl-4223406442"><script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8913642688016174" crossorigin="anonymous"></script><ins class="adsbygoogle" style="display:block;" data-ad-client="ca-pub-8913642688016174" 
data-ad-slot="4196732648" 
data-ad-format="auto"></ins>
<script> 
(adsbygoogle = window.adsbygoogle || []).push({}); 
</script>
</div><h2>新しいブックを開く</h2>
<p>起動したExcelで新しいブックを開くには、[Application.Workbooks.Add()]を利用する。<br />
サンプルを実行するとExcelが起動して3秒後に新しいブックが開き、さらに3秒後にExcelが終了する。</p><pre class="urvanov-syntax-highlighter-plain-tag">' Excel起動
Set oXlsApp = CreateObject("Excel.Application")
If oXlsApp Is Nothing Then
	' Excel起動失敗
	MsgBox "Excel起動失敗"
Else
	' Excel起動成功
	' --Excel表示（falseにすると非表示にできる）
	oXlsApp.Application.Visible = true
	' --3秒待つ
	WScript.Sleep(3000)
	' --ブックの追加
	oXlsApp.Application.Workbooks.Add()
	' --3秒待つ
	WScript.Sleep(3000)
	' --Excel終了
	oXlsApp.Quit
	' --Excelオブジェクトクリア
	Set oXlsApp = Nothing
End If</pre><p>&nbsp;</p>
<h2>既存のブックを開く</h2>
<p>起動したExcelで既存のブックを開くには、[Application.Workbooks.Open()]を利用する。<br />
サンプルを実行するとExcelが起動して3秒後に既存のブック（Test.xlsx）が開き、さらに3秒後にExcelが終了する。<br />
※実行前に[C:]ドライブの直下にファイル名[Test.xlsx]のExcelファイルを用意する。</p><pre class="urvanov-syntax-highlighter-plain-tag">' Excel起動
Set oXlsApp = CreateObject("Excel.Application")
If oXlsApp Is Nothing Then
	' Excel起動失敗
	MsgBox "Excel起動失敗"
Else
	' Excel起動成功
	' --Excel表示（falseにすると非表示にできる）
	oXlsApp.Application.Visible = true
	' --3秒待つ
	WScript.Sleep(3000)
	' --ブックを開く
	oXlsApp.Application.Workbooks.Open("C:/Test.xlsx")
	' --3秒待つ
	WScript.Sleep(3000)
	' --Excel終了
	oXlsApp.Quit
	' --Excelオブジェクトクリア
	Set oXlsApp = Nothing
End If</pre><p>&nbsp;</p>
<h2>セルに値を設定</h2>
<p>セルに値を設定する方法は、Range指定とCells指定の2通りが存在する。<br />
サンプルを実行するとExcelが起動して3秒後に新しいブックが開き、A1セルに&#8221;aaa&#8221;、C2セルに&#8221;100&#8243;が入力され、さらに3秒後にExcelが終了する。</p><pre class="urvanov-syntax-highlighter-plain-tag">' Excel起動
Set oXlsApp = CreateObject("Excel.Application")
If oXlsApp Is Nothing Then
	' Excel起動失敗
	MsgBox "Excel起動失敗"
Else
	' Excel起動成功
	' --Excel表示（falseにすると非表示にできる）
	oXlsApp.Application.Visible = true
	' --Excelの警告を非表示にする
	oXlsApp.Application.DisplayAlerts = False
	' --3秒待つ
	WScript.Sleep(3000)
	' --ブック追加
	oXlsApp.Application.Workbooks.Add()
	' --シート選択
	Set oSheet = oXlsApp.Worksheets(1)
	' --A1のセルに値を設定
	oSheet.Range("A1").value = "aaa"
	' --行が2、列が3のセルに値を設定
	oSheet.Cells(2, 3).value = 100
	' --3秒待つ
	WScript.Sleep(3000)
	' --Excel終了
	oXlsApp.Quit
	' --Excelオブジェクトクリア
	Set oXlsApp = Nothing
End If</pre><p>&nbsp;</p>
<h2>セルの値を取得</h2>
<p>セルの値を取得する方法は、Range指定とCells指定の2通りが存在する。<br />
サンプルを実行するとExcelが起動して3秒後に新しいブックが開き、A1セル、C2セルの値がメッセージボックスに表示され、さらに3秒後にExcelが終了する。<br />
※実行前に[C:]ドライブの直下にファイル名[Test.xlsx]のExcelファイルを用意して、A1セル、C2セルに値を設定しておく。</p><pre class="urvanov-syntax-highlighter-plain-tag">' Excel起動
Set oXlsApp = CreateObject("Excel.Application")
If oXlsApp Is Nothing Then
	' Excel起動失敗
	MsgBox "Excel起動失敗"
Else
	' Excel起動成功
	' --Excel表示（falseにすると非表示にできる）
	oXlsApp.Application.Visible = true
	' --Excelの警告を非表示にする
	oXlsApp.Application.DisplayAlerts = False
	' --3秒待つ
	WScript.Sleep(3000)
	' --ブックを開く
	oXlsApp.Application.Workbooks.Open("C:/Test.xlsx")
	' --シート選択
	Set oSheet = oXlsApp.Worksheets(1)
	' --A1のセルに値を設定
	MsgBox "A1セル：" &amp; oSheet.Range("A1").value
	' --行が2、列が3のセルに値を設定
	MsgBox "C2セル：" &amp; oSheet.Cells(2, 3).value
	' --3秒待つ
	WScript.Sleep(3000)
	' --Excel終了
	oXlsApp.Quit
	' --Excelオブジェクトクリア
	Set oXlsApp = Nothing
End If</pre><p>&nbsp;</p>
<h2>セルの値の検索</h2>
<p>[Worksheets.Cells.Find()]を利用することで、値の検索が可能となる。<br />
サンプルを実行するとExcelが起動して3秒後に新しいブックが開き、値(&#8220;100&#8221;)が入力されているセルの行列がメッセージボックスに表示され、さらに3秒後にExcelが終了する。<br />
※実行前に[C:]ドライブの直下にファイル名[Test.xlsx]のExcelファイルを用意して、C2セルに値(&#8220;100&#8221;)を設定しておく。</p><pre class="urvanov-syntax-highlighter-plain-tag">' Excel起動
Set oXlsApp = CreateObject("Excel.Application")
If oXlsApp Is Nothing Then
	' Excel起動失敗
	MsgBox "Excel起動失敗"
Else
	' Excel起動成功
	' --Excel表示（falseにすると非表示にできる）
	oXlsApp.Application.Visible = true
	' --Excelの警告を非表示にする
	oXlsApp.Application.DisplayAlerts = False
	' --3秒待つ
	WScript.Sleep(3000)
	' --ブックを開く
	oXlsApp.Application.Workbooks.Open("C:/Test.xlsx")
	' --シート選択
	Set oSheet = oXlsApp.Worksheets(1)
	' セル選択
	Set oRange = oSheet.Cells.Find("100")
	If oRange Is Nothing Then
		MsgBox "検索対象が存在しません。"
	Else
		' セルの位置を表示
		MsgBox "行:" &amp; oRange.Row &amp; vbCrlf &amp; "列：" &amp; oRange.Column
	End If
	' --3秒待つ
	WScript.Sleep(3000)
	' --Excel終了
	oXlsApp.Quit
	' --Excelオブジェクトクリア
	Set oXlsApp = Nothing
End If</pre><p>&nbsp;</p>
<div class="knowl-after-content-ad" style="margin-top: 40px;" id="knowl-4084522559"><script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8913642688016174" crossorigin="anonymous"></script><ins class="adsbygoogle" style="display:block;" data-ad-client="ca-pub-8913642688016174" 
data-ad-slot="2719999442" 
data-ad-format="auto"></ins>
<script> 
(adsbygoogle = window.adsbygoogle || []).push({}); 
</script>
</div><div class="knowl-after-content-relation" id="knowl-2720582750"><script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8913642688016174" crossorigin="anonymous"></script><ins class="adsbygoogle" style="display:block;" data-ad-client="ca-pub-8913642688016174" 
data-ad-slot="7848218644" 
data-ad-format="autorelaxed"></ins>
<script> 
(adsbygoogle = window.adsbygoogle || []).push({}); 
</script>
</div>]]></content:encoded>
					
					<wfw:commentRss>https://knowledge.reontosanta.com/archives/838/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">838</post-id>	</item>
		<item>
		<title>VBScriptでコマンドライン引数を扱う</title>
		<link>https://knowledge.reontosanta.com/archives/844</link>
					<comments>https://knowledge.reontosanta.com/archives/844#respond</comments>
		
		<dc:creator><![CDATA[mogice]]></dc:creator>
		<pubDate>Sun, 31 Jan 2016 23:22:58 +0000</pubDate>
				<category><![CDATA[VBScript]]></category>
		<guid isPermaLink="false">http://knowledge.reontosanta.com/?p=844</guid>

					<description><![CDATA[VBScriptでは、[WScript.Arguments]を利用す&#46;&#46;&#46;]]></description>
										<content:encoded><![CDATA[<p>VBScriptでは、[WScript.Arguments]を利用することでコマンドラインの情報を取得できる。</p>
<p>&nbsp;</p>
<h2>引数の数を取得</h2>
<p>VBScriptのコマンドライン引数の数を取得するには、[WScript.Arguments.Count]を利用する。<br />
※[WScript.Quit()]でVBScriptで処理終了<br />
引数を必須とする場合、以下のコードで実現できる。</p><pre class="urvanov-syntax-highlighter-plain-tag">If WScript.Arguments.Count = 0 Then
	MsgBox "引数を指定してください"
	WScript.Quit(-1)
End If</pre><p>引数を1つに指定する場合、以下のコードで実現できる。</p><pre class="urvanov-syntax-highlighter-plain-tag">If WScript.Arguments.Count &lt;&gt; 1 Then
	MsgBox "引数を1つだけ指定してください"
	WScript.Quit(-1)
End If</pre><p>&nbsp;</p>
<div class="knowl-content" style="margin-top: 40px;" id="knowl-2385271584"><script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8913642688016174" crossorigin="anonymous"></script><ins class="adsbygoogle" style="display:block;" data-ad-client="ca-pub-8913642688016174" 
data-ad-slot="4196732648" 
data-ad-format="auto"></ins>
<script> 
(adsbygoogle = window.adsbygoogle || []).push({}); 
</script>
</div><h2>引数の値を取得</h2>
<p>[WScript.Arguments]は配列構造となっている為、添字を指定することで、任意の引数を取得することができる。</p><pre class="urvanov-syntax-highlighter-plain-tag">'引数の数をチェック
If WScript.Arguments.Count &gt; 2 Then
	MsgBox "引数を2つ以上指定してください"
	WScript.Quit(-1)
End If
'引数の値を表示
MsgBox "引数1：" &amp; WScript.Arguments(0)
MsgBox "引数2：" &amp; WScript.Arguments(1)</pre><p>&nbsp;</p>
<h2>全ての引数の値を取得</h2>
<p>ループを利用して、指定された全ての引数を取得することができる。</p><pre class="urvanov-syntax-highlighter-plain-tag">'引数の数をチェック
If WScript.Arguments.Count = 0 Then
	MsgBox "引数を指定してください"
	WScript.Quit(-1)
End If
'引数の値を表示
For cnt = 0 To WScript.Arguments.Count - 1
	MsgBox "引数" &amp; cnt + 1 &amp; "：" &amp; WScript.Arguments(cnt)
Next</pre><p>&nbsp;</p>
<div class="knowl-after-content-ad" style="margin-top: 40px;" id="knowl-3668022870"><script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8913642688016174" crossorigin="anonymous"></script><ins class="adsbygoogle" style="display:block;" data-ad-client="ca-pub-8913642688016174" 
data-ad-slot="2719999442" 
data-ad-format="auto"></ins>
<script> 
(adsbygoogle = window.adsbygoogle || []).push({}); 
</script>
</div><div class="knowl-after-content-relation" id="knowl-3123533956"><script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8913642688016174" crossorigin="anonymous"></script><ins class="adsbygoogle" style="display:block;" data-ad-client="ca-pub-8913642688016174" 
data-ad-slot="7848218644" 
data-ad-format="autorelaxed"></ins>
<script> 
(adsbygoogle = window.adsbygoogle || []).push({}); 
</script>
</div>]]></content:encoded>
					
					<wfw:commentRss>https://knowledge.reontosanta.com/archives/844/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">844</post-id>	</item>
	</channel>
</rss>
