RPAという用語が広まってから、かなり経ちますが、RPAツールを使うよりもエクセルマクロやバッチ、VBSなどを好む方も多いのではないでしょうか。
特に、様々な局面でエクセルを多用している業務の場合、エクセルマクロやVBSはとても有用です。ただ、「プログラムって難しいのでは?」と思う方もいるかと思います。しかし、エクセルマクロやVBSはプログラミング言語の中では簡単な部類に入ります。
次の動画のように、エクセル入力からグラフ作成まで、いろいろな作業を自動化することができます。
上記のような作業は、次のようなソースコードのVBSで実装されています。
Option Explicit
'<<<Include>>>
Dim objFso
Set objFso = CreateObject("Scripting.FileSystemObject")
Function Include(ByVal strFileName)
Include = objFso.OpenTextFile(strFileName, 1, False).ReadAll()
End Function
Execute Include(".\Common.vbs")
Set objFso = Nothing
Randomize
Dim xl
Set xl = CreateObject("Excel.Application")
xl.WindowState = -4137
xl.Visible = True
xl.DisplayAlerts = False
Dim wb
Set wb = xl.Workbooks.Add()
CreateObject("WScript.Shell").AppActivate xl.Caption
Dim ws
Set ws = wb.Worksheets("Sheet1")
WScript.Sleep 5000
Call SendKeysEx(ws.Range("A1"), "班")
Call SendKeysEx(ws.Range("B1"), "氏名")
Call SendKeysEx(ws.Range("C1"), "国語")
Call SendKeysEx(ws.Range("D1"), "算数")
Call SendKeysEx(ws.Range("E1"), "理科")
Call SendKeysEx(ws.Range("F1"), "社会")
WScript.Sleep 5000
Call SendKeysEx(ws.Range("A2"), "1"): Call SendKeysEx(ws.Range("B2"), "鈴木")
Call SendKeysEx(ws.Range("A3"), "1"): Call SendKeysEx(ws.Range("B3"), "佐藤")
Call SendKeysEx(ws.Range("A4"), "2"): Call SendKeysEx(ws.Range("B4"), "田中")
Call SendKeysEx(ws.Range("A5"), "2"): Call SendKeysEx(ws.Range("B5"), "山田")
WScript.Sleep 5000
Dim iRow
For iRow = 2 To 5
Call SendKeysEx(ws.Range("C" & CStr(iRow)), GetValue())
Call SendKeysEx(ws.Range("D" & CStr(iRow)), GetValue())
Call SendKeysEx(ws.Range("E" & CStr(iRow)), GetValue())
Call SendKeysEx(ws.Range("F" & CStr(iRow)), GetValue())
WScript.Sleep 1000
Next
WScript.Sleep 5000
Call SendKeysEx(ws.Range("G1"), "合計")
WScript.Sleep 5000
For iRow = 2 To 5
Call SendKeysEx(ws.Range("G" & CStr(iRow)), "SUM(C" & CStr(iRow) & ":F" & CStr(iRow) & ")")
ws.Range("G" & CStr(iRow)).Value = "=" & ws.Range("G" & CStr(iRow)).Value
Next
WScript.Sleep 5000
xl.ActiveWindow.DisplayGridLines = False
WScript.Sleep 1000
With ws.Range("A1:G5")
.Borders(7).LineStyle = 1 '7=xlEdgeLeft '1=xlContinuous
.Borders(8).LineStyle = 1 '8=xlEdgeTop '1=xlContinuous
.Borders(9).LineStyle = 1 '9=xlEdgeBottom '1=xlContinuous
.Borders(10).LineStyle = 1 '10=xlEdgeRight '1=xlContinuous
WScript.Sleep 1000
.Borders(11).LineStyle = 1 '11=xlInsideVertical '1=xlContinuous
.Borders(12).LineStyle = 1 '12=xlInsideHorizontal '1=xlContinuous
End With
WScript.Sleep 1000
ws.Range("A1:G1").Interior.ColorIndex = 36
WScript.Sleep 1000
ws.Range("A2:A5").Interior.ColorIndex = 31
WScript.Sleep 1000
ws.Range("B2:B5").Interior.ColorIndex = 23
WScript.Sleep 1000
ws.Range("A2:A5").Font.ColorIndex = 2
WScript.Sleep 1000
ws.Range("B2:B5").Font.ColorIndex = 2
WScript.Sleep 5000
Dim gr
Set gr = ws.ChartObjects.Add(0, 110, 500, 300)
gr.Chart.ChartType = 52
gr.Chart.SetSourceData ws.Range("A1:F5")
Function GetValue()
Dim intUpper, intLower
intUpper = 100
intLower = 1
GetValue = Int((intUpper - intLower + 1) * Rnd + intLower)
End Function
演出のために、キー入力と同時にキーボードを押下したようなサウンドを鳴らしています。このソースコードは、以下からダウンロードできます。
ダウンロード
コメント