LoginSignup
1
0

More than 3 years have passed since last update.

UiPathでExcelを操作する(活用編 : 最終列を取得する)

Last updated at Posted at 2020-06-28

UiPathでExcelを操作する(活用編: 最終列を取得する)

概要

UiPathでExcelのセルから、最終列を取得する方法をご紹介します。
image.png

お約束事項(免責事項)

  • この記事は2020年6月時点の情報を基に作成しております。
  • 記事の内容は私個人の見解であり、所属する組織の公式見解ではありません。

スキル

この記事には、C#によるカスタムアクティビティの開発が含まれます。
カスタムアクティビティの開発方法は、UiPath公式のドキュメントを参照ください。
(本記事では最低限のみ記載します。)
https://docs.uipath.com/activities/lang-ja/docs/creating-a-custom-activity

必要なソフトウェア

  • Visual Studio
  • Nuget または Nuget Package Explorer
  • Microsoft Office

実装内容の確認

マクロの記録を活用し、実装内容を確認します。

1. Excelデータを用意する

今回は、4x4の以下のデータを用意しました。
image.png

2. マクロの記録を開始する

開発タブから、マクロの記録を選択します。
マクロ名はデフォルトのまま進めます。
image.png
image.png

3. 開始セルを選択する

最終行を特定する前に、開始セルを選択する必要があります。
この記事では、1Aのデータが設定されている、C3のセルを選択しています。

4. [Ctrl] + [→]で最終行に移動する

Ctrlキーと→キーを押すと、最終列の1Dのセルに移動します。
image.png

5.マクロ内容の確認

開発タブから記録の停止を選択して、実装内容を確認します。
image.png

image.png

image.png

実装

マクロの内容をもとに、実装します。

using Microsoft.Office.Interop.Excel;
using System;
using System.Activities;
using System.ComponentModel;

namespace UiPathCustomLibrary
{
    public class GetEndColumn : CodeActivity
    {
        [Category("Input")]
        [RequiredArgument]
        public InArgument<Object> WorkbookApplication { get; set; }
        [Category("Input")]
        [RequiredArgument]
        public InArgument<String> SheetName { get; set; }
        [Category("Input")]
        [RequiredArgument]
        public InArgument<String> Range { get; set; }
        [Category("Output")]
        public OutArgument<int> EndColumnNum { get; set; }
        protected override void Execute(CodeActivityContext context)
        {
            // 引数(InArgument)より、WorkbookApplicationのオブジェクトを取得する
            // WorkbookApplicationの属性に必須(RequireArgument)を指定しているため、workbookappのnullチェックは不要
            object workbookapp = WorkbookApplication.Get(context);

            // WorkbookApplicationから、Microsoft.Office.Interop.Excel.Workbook型として(キャストして)、CurrentWorkbookを読み込む
            Workbook workbook = workbookapp.GetType().GetProperty("CurrentWorkbook").GetValue(workbookapp) as Workbook;

            // 対象のシート(初期値:null)
            Worksheet worksheet = null;

            // ワークシート一覧からシート名が一致するシートを取得する
            foreach (Worksheet ws in workbook.Worksheets)
            {
                if (ws.Name == SheetName.Get(context))
                {
                    worksheet = ws;
                    worksheet.Activate();
                    break;
                }
            }
            // 対象のシートが初期値のままの場合、例外を発生して終了する
            if (worksheet == null)
            {
                throw new ArgumentException("指定されたシート名が存在しません");
            }
            // 指定されたRangeを選択する
            // マクロの("C3")と同じ
            Range range = worksheet.Range[Range.Get(context)];

            // セルを選択する
            range.Select();
            // 選択したセルから下方向に、最終行の行数を取得する
            int endColumnNum = range.End[XlDirection.xlToRight].Column;

            EndColumnNum.Set(context, endColumnNum);
        }
    }
}


実行確認

ExcelApplicationScopeでは”Sample.xlsx"ファイルを指定し、
Nuget Package Explorerで作成したライブラリをUiPath Studioでインストールした後、早速使ってみます。

image.png

image.png

1
0
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
1
0