はじめに
この投稿は、RPAツール「UiPath」の 実装例 の記事です。
UiPathのコミュニティ「UiPath Friends」が企画する「UiPathブログ発信チャレンジ2021サマー」の 29日目の投稿でもあります。
企画の内容は こちら 。カレンダーのURLは こちら です。
Excel操作を.NETのコードでやってみよう
「Excel操作を.NETのコードでやってみよう」シリーズです。リンクはこちら。
罫線を引く方法4つ
UiPathで、Excelで罫線を引く場合、以下の方法があります。
1)標準アクティビティで引く
2)マケプレの「かんたん Excel アクティビティパック」で引く
3)VBAコードで引く
4).NETコードで引く
1)標準アクティビティで引く
2021年7月現在では、残念ながら「罫線を引く」標準アクティビティはありません。
今後のリリースに期待です。
2)マケプレの「かんたん Excel アクティビティパック」で引く
マーケットプレイスに以下のアクティビティがあり、その中に以下の罫線を引くアクティビティが用意されています
- 範囲の「上罫線」を設定
- 範囲の「下罫線」を設定
- 範囲の「左罫線」を設定
- 範囲の「右罫線」を設定
- 範囲の「右上がり斜め罫線」を設定
- 範囲の「右下がり斜め罫線を設定
- 範囲の「外枠罫線」を設定
- 範囲の「格子罫線」を設定
- 範囲の「太枠中格子罫線」を設定
- 範囲の「枠なし罫線」を設定
内部のコードは「VBAコードの実行」により機能を実現しているため、Excelオプションのセキュリティセンターで、セキュリティ設定「「VBAプロジェクト オブジェクト モデルへのアクセスを信頼する」をONに変更」が必要となります。
上記で要件を満たせないものは、以下で紹介の3,4の方法で実装する必要があります。
3)VBAコードで引く
以下の記事に紹介がありますので、今回は説明を割愛します。
4).NETコードで引く
InvokeCodeでエクセルを操作します。以下のコードは、範囲内のセル全てで、上下左右に罫線を引くコードです。
アレンジすれば、他の引き方も出来ます。
'// 引数)filePath:エクセルのファイルパス
'// 引数)sheetName:エクセルの対象シート名
'// 引数)range:罫線を引きたい範囲の指定(例:"A1:B2")
'// 引数)lineStyle:罫線のスタイル
'// 引数)borderWeight:罫線の太さ
Dim ap As New Microsoft.Office.Interop.Excel.Application
Dim wb As Microsoft.Office.Interop.Excel.Workbook = ap.Workbooks.Open(filePath)
Try
'// シートループ
For Each ws As Microsoft.Office.Interop.Excel.Worksheet In wb.Sheets
If ws.Name.ToUpper() = sheetName.ToUpper() Then
Dim bdBtm, bdTop, bdLef, bdRig As Microsoft.Office.Interop.Excel.border
Dim rg As Microsoft.Office.Interop.Excel.Range = ws.Range(range)
For Each rgcell As Microsoft.Office.Interop.Excel.Range In rg
'// 指定範囲の上部下部の罫線を引く
bdBtm = rgcell.Borders(Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeBottom)
bdTop = rgcell.Borders(Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeTop)
bdBtm.LineStyle = lineStyle
bdTop.LineStyle = lineStyle
bdBtm.Weight = borderWeight
bdTop.Weight = borderWeight
'// 指定範囲の左右の罫線を引く
bdLef = rgcell.Borders(Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeLeft)
bdRig = rgcell.Borders(Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeRight)
bdLef.LineStyle = lineStyle
bdRig.LineStyle = lineStyle
bdLef.Weight = borderWeight
bdRig.Weight = borderWeight
Next
Exit For
End If
Next
wb.Save
wb.Close
If Not(wb Is Nothing) Then wb = Nothing
If Not(ap Is Nothing) Then ap = Nothing
Catch ex As Exception
Console.writeLine(ex.ToString)
If Not(wb Is Nothing) Then wb = Nothing
If Not(ap Is Nothing) Then ap = Nothing
Throw(ex)
End Try
終わりに
いかがでしたでしょうか?実装の参考になれば幸いです。
この記事が参考になったら、 LGTMをお願いします。閲覧ありがとうございました。