LacotasuBlog

ポンコツ社内SEの備忘録

RPA WinActor

Excel操作(列削除)が1列ずつしか削除できないので、複数同時に削除できるようにする方法

投稿日:

修正方法

これのスクリプトを修正

↓スクリプトの「指定された列を削除する」のところを以下の赤字のように修正

' ====指定されたファイルを開く====================================================

' ファイルのパスをフルパスに変換する
fname = !ファイル名!
SetUMSVariable "$FILE_PATH_TYPE", "1"
SetUMSVariable "$PARSE_FILE_PATH", fname
filePath = GetUMSVariable("$PARSE_FILE_PATH")
If filePath = "" Then
Err.Raise 1, "", "指定されたファイルを開くことができません。"
End If

' workbookオブジェクトを取得する
Set workbook = Nothing
On Error Resume Next
' 既存のエクセルが起動されていれば警告を抑制する
Set existingXlsApp = Nothing
Set existingXlsApp = GetObject(, "Excel.Application")
existingXlsApp.DisplayAlerts = False

Set wash = CreateObject("WinActor7.ScriptHelper")
For Each book in wash.GetExcelWorkbooks
SetUMSVariable "$FILE_PATH_TYPE", 0
SetUMSVariable "$PARSE_FILE_PATH", book.FullName
bookPath = GetUMSVariable("$PARSE_FILE_PATH")
If StrComp(bookPath, filePath, 1) = 0 Then
Set workbook = book
Set xlsApp = workbook.Parent
xlsApp.Visible = True
Exit For
End If
Next
Set wash = Nothing

' Workbookが存在しない場合は、新たに開く。
If workbook Is Nothing Then
Set xlsApp = Nothing

' Excelが既に開かれていたならそれを再利用する
If Not existingXlsApp Is Nothing Then
  Set xlsApp = existingXlsApp
  xlsApp.Visible = True
Else
  Set xlsApp = CreateObject("Excel.Application")
  xlsApp.Visible = True
End If

Set workbook = xlsApp.Workbooks.Open(filePath)

End If

' 警告の抑制を元に戻す
existingXlsApp.DisplayAlerts = True
Set existingXlsApp = Nothing
On Error Goto 0

If workbook Is Nothing Then
Err.Raise 1, "", "指定されたファイルを開くことができません。"
End If

' ====指定されたシートを取得する==================================================

sheetName = !シート名!
Set worksheet = Nothing
On Error Resume Next
' シート名が指定されていない場合は、アクティブシートを対象とする
If sheetName = "" Then
Set worksheet = workbook.ActiveSheet
Else
Set worksheet = workbook.Worksheets(sheetName)
End If
On Error Goto 0

If worksheet Is Nothing Then
Err.Raise 1, "", "指定されたシートが見つかりません。"
End If

worksheet.Activate

' ====指定された列を削除する==================================================

' 削除する列を配列として扱う
deleteColumns = Split(!削除列!, ",")

' 列を降順にソート(後ろの列から削除するため)
For i = 0 To UBound(deleteColumns) - 1
For j = i + 1 To UBound(deleteColumns)
If CInt(Trim(deleteColumns(i))) < CInt(Trim(deleteColumns(j))) Then
temp = deleteColumns(i)
deleteColumns(i) = deleteColumns(j)
deleteColumns(j) = temp
End If
Next

Next

' 各列を削除
For Each col In deleteColumns
colNum = CInt(Trim(col))
worksheet.Columns(colNum).Delete
Next

Set objRe = Nothing
Set xlsApp = Nothing
Set worksheet = Nothing
Set workbook = Nothing

使い方

削除したい列をいくつでも列番号で数字でカンマ区切り

以上

-RPA, WinActor

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

関連記事

[第7回] 【基本操作】レコーダーを使用せずWeb画面の照会画面をCSVファイルに出力する【スクレイピング】

前回はファイル出力ボタンからファイルをダウンロードするロボットを作成しました。今回は照会画面の検索結果をcsvファイルに出力するロボットを作成したいと思います。 とりあえず最終形は ↓ こうした それ ...

【WinActor】 フォルダごと削除とかフォルダ内のファイル全削除とか【ワイルドカード】

シナリオはこれ ファイル削除_フォルダ内の全ファイル削除 C:¥てst¥*.*      ↑アスタリスク ドット アスタリスク スクリプト実行_フォルダごと削除 '削除するフォルダのパスstrPath ...

[第31回] CSV を Excel で保存するフロー【ゼロ落ちさせない】

全体概要 ・フローが長くなったのでメモ帳の処理とExcelの処理にサブフローで分けた。◆メモ帳の処理①csvファイルをメモ帳で開く②念のため①で開いたメモ帳の入力部分にフォーカス③タブを入力→Shif ...

【WinActor】格子罫線を引く→数値の列に合計を表示→フィルタを設定【結局ショートカットキーかよ】

概要 使用したファイルはこのサンプルデータを使用しました。 ①対象のExcelを開く②Ctrl+Home(念のためA1にカーソル)③Ctrl+A(表をすべて選択)④Alt→H→B→A(格子罫線を引く) ...

[第18回]【基本操作】Excelでフィルタを実行する【PAD】

【目標】Excelを開く → フィルターを設定 → 金額が200円以上 500円未満のデータをフィルタリングする。 とりあえず最終形はこうした ↓ Excelの起動 ウィンドウを待機する ↑ UI要素 ...