nosawa
(N.O)
July 10, 2021, 10:45am
1
UiPath Studioにおいて、Excel Application Scopeの内部にInvoke VBAを設置し、
実行しているのですが、正常に動作するものと、
「Invoke VBA: マクロ (実行しようとしているマクロ名) を実行できません。このブックでマクロが使用できないか、またはすべてのマクロが無効になっている可能性があります。」とメッセージが出るものがあります。
同じテキストファイルから、呼び出しマクロ名を変えて、正常に動作するものとそうでないものがあることから、UiPathのVBAに動作に必要な環境設定は完了していると考えております。
実行しているVBAソースは以下になります。
VBA.txt (622 Bytes)
正常に動作するVBA:Clear_Filters、SortDataWithDate
動作しないVBA:Release_Table
動作しないVBA(Release_Table)については、ブックの指定やシートの指定が
出来てないのだろうと推察しております。
正常に動作するVBAと比較してみましたが、
Clear_Filtersは全シートを対象にしているため、今回やりたいことに適用出来ません。
(しかもDimで宣言しているxWsは使わず、Wksが式中で使用されているのが謎です)
Clear Filterはシート指定の記述がありませんが、ActiveSheet(最後に開いたシートのことであると
考えております)を対象にしていると考えておりますが、
それを真似て
Sub Release_Table()
ListObjects(1).Unlist
End Sub
とだけ記述しても動作しません。
VBAについて、認識が違っている部分を含めて、ご教示いただけますと幸いです。
よろしくお願い致します。
(最終的に実行したいのは、最後に保存を行ったシートにテーブル設定がしてあった場合の、テーブル解除です)
HANACCHI
(はなっち!UiPath Japan MVP 2019-2022)
July 10, 2021, 2:41pm
2
結果から言うと、Release_Table、ちゃんと動いています。無論、解除後に再実行すると、テーブル定義がなくなっているので、インデックス関係のエラーになります。
更に言うと、Release_AllTableもちゃんと動いています。
「Dimで宣言しているxWsは使わず」ですが、「VBA読み出し」アクティビティの中のVBAファイルでは、変数を強制定義するオプション「Option Explicit」が使えないので、定義した名前を使わなくても、定義していない名前を使っても大丈夫なんですね。
VBAは一度、EXCEL-VBA側でデバッグしてから、エクスポートし、そのファイルを使用すると、綺麗なVBAコーディングとなりますね。
ちょっと改良して、、、
Sub Release_Table()
if ActiveSheet.ListObjects.count <> 0 then
ActiveSheet.ListObjects(1).Unlist
end if
End Sub
nosawa
(N.O)
July 10, 2021, 4:13pm
3
@HANACCHI さん
ありがとうございます。
いただいたコマンドをテキストファイルに保存して流してみたところ、無事実行されました。
結果から言うと、Release_Table、ちゃんと動いています。無論、解除後に再実行すると、テーブル定義がなくなっているので、インデックス関係のエラーになります。
ちゃんと動いているのにエラーとなっていたのは、どのような理由なのでしょうか?
(再実行において、テーブル定義がない場合に、テーブル解除のコマンドが実行できないのは理解出来ます)
「Dimで宣言しているxWsは使わず」ですが、「VBA読み出し」アクティビティの中のVBAファイルでは、変数を強制定義するオプション「Option Explicit」が使えないので、定義した名前を使わなくても、定義していない名前を使っても大丈夫なんですね。
これは初めて知りました。定義していない名前を使ったほうが、式はシンプルになりそうですね。
VBAは一度、EXCEL-VBA側でデバッグしてから、エクスポートし、そのファイルを使用すると、綺麗なVBAコーディングとなりますね。
今後組む際は、そのようにしてみたいと思います。
ご教示ありがとうございます!
1 Like
HANACCHI
(はなっち!UiPath Japan MVP 2019-2022)
July 12, 2021, 5:58am
4
その後、こちらでも再現しました!
原因は、目から鱗でした!
.basファイルを編集した際に、SJISで保存したとします。
その後の修正で、コードがUTF-8などに代わってしまって、テキストエディタではSJIS/UTF-8を自動判断して綺麗に表示してくれますが、VBAアクティビティはSJISのみで、UTF-8コードを文字化けさせ、本来のエントリメソッドがない!と判断され、該当エラーになったようです!
nosawa
(N.O)
July 13, 2021, 5:28am
5
@HANACCHI
ありがとうございます。
ずっとメモ帳アプリで編集していたので、上記事象に気づきませんでした。
今後は、サクラエディタなどのSJISオンリーを表示するもので、編集したいと思います。
1 Like
system
(system)
Closed
July 16, 2021, 5:29am
6
This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.