UiPathで自動化を行う際、避けて通れないのが「変数」と「データ型」の理解です。
「型が一致しません」「オブジェクト参照が設定されていません」などのエラーに悩まされた経験はありませんか?
これらの多くは、変数の使い方やデータ型の指定を誤ったことが原因です。
この記事では、UiPathでの変数とデータ型の基本、エラーを防ぐための実践テクニックまでを丁寧に解説します。
目次
- ✅ UiPathの変数とは?自動化の「記憶領域」を理解しよう
- ・変数の役割
- ・変数を作成する方法
- ✅ UiPathで使われる主なデータ型一覧
- ・基本的なデータ型
- ・コレクション型(複数データを扱う)
- ✅ 変数のスコープとライフサイクルを理解する
- ・スコープとは
- ・スコープ変更の方法
- ✅ UiPathでよくある型エラーとその解決方法
- ・エラー①:型が一致しません(Compiler error)
- ・エラー②:オブジェクト参照が設定されていません(NullReferenceException)
- ・エラー③:値が期待する範囲を超えています(OverflowException)
- ✅ データ型変換のコツと実践例
- ・文字列と数値の変換
- ・日付型の変換
- ・Boolean型の利用
- ✅ 実務で役立つ変数設計のベストプラクティス
- ・命名規則を統一する
- ・変数の初期値を明確にする
- ・共通変数と一時変数を分ける
- ✅ デバッグ時に役立つ変数の確認方法
- ・「ローカル」パネルを活用
- ・「ログメッセージ」で中間出力
- ✅ まとめ:変数とデータ型を理解すればUiPath開発は格段に安定する
✅ UiPathの変数とは?自動化の「記憶領域」を理解しよう
・変数の役割
変数とは、処理中に一時的に値を保存するための箱です。
Excelのセルに一時的にデータを保存するイメージに近く、UiPathのワークフローの中でデータを受け渡す役割を果たします。
例えば、次のようなケースです:
- 画面から取得したテキストを一時的に保持する
- 計算結果を保存して次のアクティビティで使う
- ループ処理でカウンターを管理する
変数を正しく設定しておくことで、ワークフロー全体が見通しやすくなり、後からの修正やデバッグも容易になります。
・変数を作成する方法
変数は主に次の3つの方法で作成できます:
- プロパティパネルから直接入力
「Output」欄に変数名を入力すると、自動的に作成されます。 - 変数パネルで明示的に追加
[変数] タブを開き、「+」ボタンから名前・型・スコープを指定して登録します。 - Assignアクティビティ内で自動生成
新しい変数名を記述して「Ctrl+K」を押すことで、自動的に変数を生成できます。
いずれの方法でも、名前・データ型・スコープの3点を意識して設定することが重要です。
✅ UiPathで使われる主なデータ型一覧
・基本的なデータ型
UiPathには数多くのデータ型がありますが、日常的に使用するのは以下の6種類です。
データ型 | 内容 | 例 |
---|---|---|
String | 文字列 | "Hello", "2025/10/19" |
Int32 | 整数 | 1, 100, -5 |
Double | 少数を含む数値 | 3.14, 2.5 |
Boolean | 真偽値 | True / False |
DateTime | 日付・時刻 | Now, New DateTime(2025,10,19) |
Object | すべての型を包括する汎用型 | Any type(型未定義の一時保存用) |
初心者のうちは「String(文字列)」と「Int32(整数)」を使い分けるだけでも、
多くの業務自動化をカバーできます。
・コレクション型(複数データを扱う)
一度に複数のデータを扱う際に使用します。
データ型 | 説明 | 使用例 |
---|---|---|
Array | 固定長配列 | {1, 2, 3} |
List(Of T) | 可変長リスト | List(Of String){"A","B","C"} |
Dictionary(Of TKey, TValue) | キーと値のペア | Dictionary(Of String, Int32) |
DataTable | 表形式のデータ格納 | Excelの表を取り込む場合など |
特に、Excelのデータを扱う場合は「DataTable」「DataRow」「DataColumn」が頻出します。
✅ 変数のスコープとライフサイクルを理解する
・スコープとは
スコープとは、その変数が有効な範囲(どこまで使えるか)を表します。
スコープが狭いと、特定のアクティビティ内でしか利用できません。
例えば:
- 「Do」ブロック内で定義された変数 → その中だけで有効
- メインスコープ(全体)で定義された変数 → すべての処理で利用可能
スコープを広くしすぎると、意図しない値上書きやメモリ浪費につながるため、
必要最小限の範囲に設定することがベストプラクティスです。
・スコープ変更の方法
変数パネルで「スコープ」列をクリックすると、使用可能な範囲をドロップダウンから選択できます。
例えば、Subシーケンスを追加したときに、新しいスコープを選択して設定することが可能です。
✅ UiPathでよくある型エラーとその解決方法
・エラー①:型が一致しません(Compiler error)
最もよく見かけるエラーのひとつが「String型にInt32を代入できません」といった型不一致エラーです。
原因:
データ型が異なる変数同士で代入や比較を行おうとした場合に発生します。
対処法:
- 数値を文字列に変換する →
ToString()
- 文字列を数値に変換する →
CInt()
,CDbl()
- 日付を文字列に変換する →
ToString("yyyy/MM/dd")
例:
myInt = CInt("123")
myString = myInt.ToString
型変換を意識するだけで、エラーの大半は解消できます。
・エラー②:オブジェクト参照が設定されていません(NullReferenceException)
これは、変数がまだ値を持っていない状態でアクセスした際に発生します。
原因:
変数を宣言しただけで、初期化(New)がされていない。
対処法:
- リストや辞書などのオブジェクトは必ず初期化する
myList = New List(Of String) myDict = New Dictionary(Of String, Int32)
補足:
特にDataTableでは、構造だけを定義して行を追加していない場合にも同様のエラーが起こります。
Build Data Table
アクティビティで明示的に列定義をしておくことが重要です。
・エラー③:値が期待する範囲を超えています(OverflowException)
Int32などの固定ビット型では、非常に大きな数値を扱うとオーバーフローが発生します。
対処法:
- 「Int64」や「Double」など、より大きな型に変更する
- 計算前に値の範囲をチェックする
✅ データ型変換のコツと実践例
・文字列と数値の変換
入力フォームやExcelデータでは、数字も文字列として扱われることが多いです。
そのため、演算を行う前に必ず型変換を行うことが大切です。
例:
total = CInt(row("数量").ToString) * CDbl(row("単価").ToString)
このように記述すれば、DataTableから読み込んだ値を正しく計算できます。
・日付型の変換
日付操作を行う場合は、文字列からDateTime型へ変換します。
myDate = DateTime.Parse("2025/10/19")
MsgBox(myDate.AddDays(7).ToString("yyyy/MM/dd"))
このように「Parse」や「AddDays」などのメソッドを組み合わせることで、日付演算も自在です。
・Boolean型の利用
条件分岐(Ifアクティビティなど)では、Boolean型が非常に重要です。
If isCompleted = True Then
LogMessage("完了しました")
End If
Excelのセル値やテキストからBooleanに変換する場合は、CBool()
関数を使います。
✅ 実務で役立つ変数設計のベストプラクティス
・命名規則を統一する
変数名は処理内容がわかるように命名することで、可読性が大幅に向上します。
おすすめの命名ルール:
str_
:文字列(例:strFilePath
)int_
:整数(例:intCount
)dt_
:日付(例:dtToday
)tbl_
:DataTable(例:tblSalesData
)
このルールを守るだけで、プロジェクトが大きくなっても混乱を防げます。
・変数の初期値を明確にする
「変数が空かどうかわからない」状態は、バグの温床です。
可能な限り初期値を設定しておきましょう。
strMessage = ""
intCount = 0
isValid = False
・共通変数と一時変数を分ける
共通で使用する変数はワークフローの上部で定義し、
一時的に使用するものはローカルスコープに限定することで、メンテナンス性が向上します。
✅ デバッグ時に役立つ変数の確認方法
・「ローカル」パネルを活用
デバッグ実行中に「ローカル」タブを開くと、現在の変数値がリアルタイムで確認できます。
この機能を活用すれば、想定通りに値が入っているか一目で確認可能です。
・「ログメッセージ」で中間出力
複雑なワークフローでは、重要な変数の値をログ出力することでトラブルシューティングが容易になります。
Log Message → "現在の処理対象:" + strCustomerName
このようにしておくと、実行ログを見返すだけで処理の流れを把握できます。
✅ まとめ:変数とデータ型を理解すればUiPath開発は格段に安定する
- 変数は「値を一時的に保持する箱」であり、ワークフローの中でデータを受け渡す要となる
- データ型を意識しないと、型不一致エラーやNull参照などのトラブルを招く
ToString()
やCInt()
などの変換関数を使いこなすことで、型の壁を超えて処理を安定化できる- 命名規則・スコープ・初期化の管理が、保守性の高い自動化のカギ
UiPathの自動化を安定させるためには、「アクティビティの使い方」だけでなく、
変数とデータ型の基礎を確実に理解することが何より重要です。
ここで紹介した考え方を意識することで、エラーの少ない堅牢なワークフローを構築できるようになるでしょう。