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 を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

関連記事

[第17回]【PAD】Outlookで受信メールの添付ファイルとかメッセージを保存する方法

前提条件としてこういうメールが送られてきたとする とりあえず最終形はこうした ↓ それでは上から行きます。 Outlookを起動します 特に何も変更しないで保存 Outlookからメールメッセージを取 ...

[第19回]【基本操作】Excelのシート追加削除【PAD】

【目標】ワークシートを追加し、既存のワークシート名を変更し、既存のワークシートを削除する。 ↑こういうシートのEXCELを ↓こういうシートに追加、変更、削除する こんな感じのことをやってみたいと思い ...

[第22回]【超初級】いろいろな日付を表示する【今日・月初・月末・ゼロサプレス・曜日とか】

現在の日付をyyyy/MM/dd(ゼロサプレスしない)で表示する 全体像はこんな感じにした。 現在の日付を日付型で取得。 日付型を文字列に変換。 表示してみる。 表示されました! 現在の日付をyyyy ...

[第20回]【Ping】死活監視プログラムを作る【PAD】

今回は、ひたすらPingを打ちまくって、途切れたらメッセージを表示するフローを作ってみたいと思います。 最終形はこんな感じ ↓ それでは上から行きます。 ループ条件 条件 : 1=1 で無限ループさせ ...

[第34回] Yahoo路線で新宿駅~東京駅までの最安運賃を検索し表示する【簡易版】

目標 ①Yahoo路線をChromeで開く②出発:新宿~到着:東京 を入力して検索ボタンを押す(同一駅名がある場合はYahooの判断に任せる)③2022/03/31 12:00:00という日時の年月日 ...