マクロの呼び出しでセルがdd/mm/yyyyになる

UiPath Studio内のアクティビティ「VBAの呼び出し」を実行しマクロを走らせると、Excelデータの日付が入力されているセルが「yyyy/mm/dd」から「dd/mm/yyyy」に強制的に変更されてしまいます。

米国の日付の入力式に変換されているのではないかと思い、マクロのスクリプト内に[SaveAs local:=True]を入力しましたが、上手く作動しませんでした。

UiPath上でこの問題を解決する方法はありますでしょうか?

よろしくお願いいたします。

forumを検索すると、国コードを設定する方法が見つかります!ja-JP辺りで検索してみてください

これだ!!

はなっち様

ご回答いただきありがとうございます。
早速試してみましたが、結果は変わらずdd/mm/yyyyのままとなっておりました。。。。

スクリーンショット 2021-03-06 225848

他の問題なのでしょうか?

CSVをXLSXに変換保存するマクロなのでしょうか?
形式変換のためでしたら、CSVを読み込んだ際にできるDataTableを
保存すべき名前を指定したEXCELアプリケーションスコープを用意し、「範囲へ書き込む」アクティビティで転記、それから保存ってのも手ですね

はなっち様

ご連絡ありがとうございます。

以下がマクロを走らせたい、csvデータをメモ帳から貼り付けたものです。

スクリーンショット 2021-03-08 102005

csvから確認すると日付部分はyyyy/mm/ddとなっております。

CSVをXLSXに変換保存するマクロなのでしょうか?
→いえ、csvデータを変換してcsvデータのまま保存します。
スクリプト内には文字置換するスクリプトが格納されています。
UiPath上で文字の置き換えもできそうですが、マクロを有効活用したいため、この現象を解決したいと思っております。

マクロで、「End Sub」ではなく、「End SubX」とかすると、実行時にエラーとなります。その際にExcelで開いているシートが見えるので、状況確認ですね。

こちらでやってみました。
image

EXCELApplicationが動いた時
image

ちゃんとなっていますねぇ…

※EXECLの言語設定は以下の通りでした

はなっち様

ご丁寧にありがとうございます。
補足として、UiPathを通さず同マクロを実行すると、日付部分の変更はなく(yyyy/mm/ddのまま)、UiPathを通すと日付の変更(yyyy/mm/dd→dd/mm/yyyy)が発生してしまっているという状況です・・・・

.Netの版数なんですかねぇ。。。

Splitして、最初の要素が4文字ならYYYY/M/D、そうでなかったら、D/M/YYYYとして処理するマクロに改修…とかかなぁ。

抜本的な解決になりませんが。。。

はなっち様

ご連絡ありがとうございます。
色々試してみましたが根本的な解決には至りませんでした。。。

splitした場合でも、UiPath上で保存した時点で、日付が逆に更新されているようです。。。

憶測の話になるのですが、UiPathアクティビティの「エクセルアプリケーション」が上手く操作
からcsvデータを呼び出すと不具合が発生するのかなと考えています。

マクロ自体もreplaceメソッドのみを格納していたので、一度他の方法を探してみようと思います。

アドバイス頂き、ありがとうございました!
引き続き勉強頑張っていきます!

こんにちは

もし可能なら、実際のワークフローやCSV等一式共有いただくと、良いかもしれません。
(文言だけだと状況が良くわかりにくいので)

Yoichi様

いつもお世話になっております。
承知しました。一式アップロードさせていただきます。
当方、AWS codecommit を利用しているのですが、そのURLを添付する形でよろしかったでしょうか?

こんにちは

差しさわりなければzipで固めて、ここにupいただくのが手っ取り早いように思えますが...
難しそうであれば、URL添付いただいても良いかと思います。

Yoichi様

失礼しました。
こちらになります。
uipathVba.zip (21.2 KB)
変換前csvデータは「Data」内フォルダに格納しております。

よろしくお願いいたします。

こんにちは

ありがとうございます。
拝見しましたが、問題はマクロ処理ではなく、CSVファイルをExcel Application Scopeで開き
これを(CSVとして)上書き保存すると、日付の書式が変わってしまうようです。

ワークアラウンドとしては、例えばマクロ実行後のワークシートを、表示形式を維持オプションを
ONにした状態で、DataTableに読み込み、これをCSV書き出しで出力する方法があるかと思います。
(Excel Appliction Scopeの自動保存は念のためOFFにした方が良いと思います。)

Yoichi様

ご連絡ありがとうございます!
早速、同ワークフローを作成し、実行してみたところ上手くいきました!
ただ、一点別の問題が出てしまいました。。。

本番のcsvデータが4000行に及ぶものでして、「範囲に読み込み」のアクティビティでかなり時間がかかってしまっております。
このフォーラムを参考にしながら解決策を企てておりますが、なにかよい方法はありますでしょうか?

こんにちは

これのパフォーマンスは如何ともしがたいところです。

このオプションを使わずに取り込んで、文字列操作等で成形すれば目的は
達成できると思いますが、今回の趣旨のVBA資産の活用の観点からは
合致しないですよね...

Yoichi様

ご連絡ありがとうございます。

「範囲に読込」の件、承知しました。

すこし他のアイデアを参考にしながら、良い方法を探していきたいと思います、ご助言いただきありがとうございました!