7
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【UiPath】Excel - 罫線を引く

Last updated at Posted at 2021-07-29

はじめに

この投稿は、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をお願いします。閲覧ありがとうございました。

7
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?