VBA Selectメソッド使うときの注意点
対象となるシートをアクティブにしてからSelectメソッドを記述しないと、
アクティブでないシートからだと、エラーになる。
対象シートをアクティブにする記述+セレクトメソッドを書くように。
vbaの配列って、横に入っている。縦にしたいとき。
Sub 配列テスト1()
Dim aryY(4) As String
Dim i As Integer
Dim msr As VbMsgBoxResult
i = 0
Range("A1").Select
Do While ActiveCell.Value <> ""
aryY(i) = ActiveCell.Value
msr = MsgBox(aryY(i) & "編集しますか?", vbYesNo)
If msr = vbNo Then
aryY(i) = "OK"
End If
ActiveCell.Offset(1, 0).Select
i = i + 1
Loop
Range("B1:B5") = WorksheetFunction.Transpose(aryY)
End Sub
ここ参考にした。↓
EXCEL関数のLenBとVBAで使うときの注意
セルに100byte以上入力されたエラーメッセージをだしたい
変数 = thisWorkbook.WorkSheets(1).Range("A1").value
変数 = LenB(StrConv(変数,vbFormUnicode))
IF 変数 >= 101 Then
MsgBox(変数)
End IF
【RPA】UiPath EXCEL読み込みとWebアプリ自動処理の練習
※できるUiPathの練習
やりたいこと
営業からExcelで経費を申請してもらったデータを読み込んで業務アプリに登録する。業務アプリが発行したコードを読み取ってExcel に追加して保存する。
手順
1. Excelのデータを読み込んで業務アプリを開く。
2.Excelから読み込んだデータを1行ずつ処理。
3.件名や金額などを自動的に入力する。
4.業務アプリが発行したコードを読み取ってExcel に追加する。
5.保存する。
手順詳細
1.Excelアプリケーションスコープ(ファイルパスをいれる)
①範囲を読み込むを実行の前に配置(出力の変数を設定する”transactions”)
②実行の中にブラウザーを開くを配置する("https://www.expense-demo.com/")
②-1 Doにクリックを配置する。
②-2webアプリのクリック先を指定する
2. 3.で行う、業務アプリが発行したコードを読み取ってExcel に追加するために、カウンターを設定する。
①クリックの下に続けて代入を配置("counter" = 2)
※1行目はヘッダーなので、2行目からカウントしてほしいため
②データテーブルの値を繰り返し処理でWeb に登録していく
②-1繰り返し(各行)を代入の下に配置する。(データテーブル各行)
繰り返し(row)次のコレクションの各要素(transactions)
②-2本体にクリックを配置
②-3クリックの次に文字を入力を配置
②-4文字を入力の中のブラウザ内の要素を指定をクリックして、入力先を指定する。
(種別を選択)
②-5入力したい文字を指定する。(row( 0).ToString)
4-5を金額、備考と入力していく。ro(0~3)と変える。
※rowは配列だから、カッコの中は列を指定してあげる。
③クリックを配置する。(登録をクリック設定)
4.業務アプリが発行したコードを読み取ってExcel に追加するために、
「アンカーベース」を配置する。
①アンカーベースのアンカーに「要素を探す」を配置する。
②要素を探すの中でブラウザに要素を指定する。(コードラベル)
③アンカーベースの中のここにアクションアクティビティをドロップに、「テキストを取得」を配置する。
⓸取得したい文字列を指定する。(コード)
⓸-1取得したテキストの値を変数に格納。出力:transactionID
⓹アンカーベースの下に「1行を書き込み」配置する。
⓹-1Text:”code:”+transactionID
⑥「セルに書き込む」を配置する。
⑥-1("sheet1") (”E”+counter.ToStiring) 式(transavtionID.ToString)
⑦代入を配置する。(counterに1ふやす)
⑧クリックを配置する。(ブラウザ内の戻るをクリックする)
これを繰り返す。
5.ブラウザを閉じる
参考引用先
【RPA】UiPath データテーブルを使って置換する
やりたいこと
csvファイルの項目(所属)の中から営業所と〇〇支店を全て「支店」に置き換える。
100件ごとにファイルを分ける。
手順
1.csvをデータテーブルに保存
2.条件は、保存したデータテーブルの項目(所属)の列から営業所と、支店を検索する。
3.Trueなら所属の列のセルに”支店”と置き換える。
4.100件以上データがあるなら、ファイルを分ける。
5.2ファイル目のデータテーブルを作成する。
6.100件目まで消して、保存する。
7.1ファイル目の101件目から以降を消す。
8.保存する。
手順詳細
1.csvを読み込みを配置
ファイルパス
出力 データテーブル 【dtb住所録】変数を登録 型はDataTable型
項目があるなら、先頭行をヘッダーにする。
2.繰り返し(データテーブルの各行)を配置
繰り返し【Row】次のコレクション内の各要素【dtb住所録】
3.条件分岐を配置
条件【Row.Item(”店名”).Tostring.contains("営業所") or Row.Item("店名").Tostring.contains("支店")】
※containsは、含まれるっていう意味
Trueなら”支店”に置き換える。
代入を配置 左辺 【RowI.tem("店名")】 右辺【”支店”】
4.条件分岐を配置
条件 【dtb住所録.Rows.count > = 101】
trueなら2ファイル目から作成
5.データテーブルを構築を配置する
出力【dtb住所録2】変数
・代入を配置
6.繰り返しコレクション要素を配置
繰り返し【item】次のコレクション内の各要素【Enuerable.Range(0,100)】
※Enuerable.Range(Int32,Int32)は、0行目から、100行目までを示す。
TypeArgument 【Int32】
7.本文にデータ削除を配置
8.csvを保存を配置
書き込み先ファイルにファイルパス
書き込み元に 【dtb住所録】ヘッダー含める。
9.1ファイル目を作る。
繰り返しの次のコレクション内の各要素は
【Enumerable.Range(101,dtb住所録.Rows.Count-102)】
5.6.7と同じようにする。
参考引用先
【RPA】UiPath ファイルの存在を確認する
やりたいこと
ファイルが存在したら、指定のファイルをcopyして保存する。
手順
1.ファイルパスを変数に代入
2.ファイル名を変数に代入
3.パスの存在を確認
4.条件分岐
5.ファイルがあったなら、リネームしてcopy
6.ないなら、スロー
手順詳細
1.変数はstring
2.変数はstring
3.パスの種類をFileにする。1.2をくっ付ける。
プロパティ
入力【変数名 + ”¥” + 変数名】
出力【boolPathExists】
4.分岐条件 boolPathExists = true (trueの時は、true省略できる)
5.trueならファイルをコピー
コピー元 【フォルダパスの変数名 + ”¥” + ファイルの変数名】
コピー先 【フォルダパスの変数名 + ”¥” + リネームしたファイル名】
6.Elseならスロー
プロパティ
条件【new Exception("ファイルがありません")】
参考引用先
パスの有無を確認において、アスタリスクを利用したファイル指定 - #9 by nguyendinhduc269 - フォーラム - UiPath Community Forum
【RPA】UiPath ワークフローファイルを呼び出して使う
やりたいこと
Mainから他のワークフローを呼び出した際、他のワークフロー(メッセージボックスを表示)にメッセージを
送る。他のワークフロー(メッセージボックスを表示)から、返事を返す。
Mainは、それを受け取り表示する。
※メッセージボックスを表示は、ワークフロー名
手順
1.Main側にワークフローの呼び出しを配置し、メッセージボックスを表示のフローへ出力する値を設定する。
2.呼び出し先フローを追加する。メッセージボックスを表示のワークフローを作る。
3.メッセージボックスを表示にMainから受け取った値を表示。
4.その返事をMainに返す。
5.メッセージボックスを表示から返ってきた値をメッセージボックスで表示。
手順詳細
1.シーケンスの中に「ワークフローからファイルを呼び出し」を追加する。
2.デザインタブのリボンの「新規」ボタンから「シーケンス」を選択する。
ワークフロー名を「メッセージボックスを表示」にする。(なんでもいいけど)
・メッセージボックスを追加する。(今は追加するだけ)
・手順1に戻って、ワークフローの呼び出しの中のワークフローファイルを、
「メッセージボックスを表示.xaml」を選択する。(1回上書き保存して、
エラーなるから)引数をインポートをクリック。青で2が出ればOK。
オレンジならエラー。
・プロパティの引数:(コレクション)の「・・・」をクリックして、
入力引数:入力 String ”いい加減な仕事しないでください!”
出力引数:出力 String Henji ←メッセージボックスを表示から返ってきた返事を
入れる変数名
変数を設定 Henji String シーケンス
3.メッセージボックスを表示のワークフローを選択しメッセージボックスを追加していたところに、Mainから渡されるメッセージを表示するために次を設定する。
・”『”+入力引数+”』を渡された”
・引数を設定する。入力引数:入力 string
出力引数:出力 string
4.Mainに返事を返すために、アクティビティから「代入」を追加する。
・左辺に出力引数
・右辺に”承知しました”
5.メッセージボックスを表示のワークフローから返ってきた返事を表示するために
メッセージボックスを追加する。
・”『”+Henji+”』と返事がきました”
参考引用先
ワークフロー開発実践入門 公式ガイドブック