いつもお世話になっております。
path existを使用しpathの存在があるかないかで処理を行うかを分岐させる処理において、Excelファイルが存在しているのにfalseの値が返ってきてしまう。
ファイルパスは"C:\Users\aaa-00000\Desktop\済\201908\博多_.xlsx"
となっていて、このパスのaaa-00000と201908と博多をそれぞれ
aaa-00000→username
201908→dt
博多→filenameという変数で格納しています。
そのまま絶対パスの"C:\Users\aaa-00000\Desktop\済\201908\博多_.xlsx"をpath existにいれるとtrueでかえってくるのですが、変数に置き換えて
“C:\Users"+username+”\Desktop\済"+dt+“"+filename+”_.xlsx"
とするとうまくいきません。
間違っている箇所のご教授頂けたら幸いです。
Yoichi
(Yoichi)
September 11, 2019, 4:03am
2
こんにちは
\が足らないような...
“C:\Users\”+username+"\Desktop\済\"+dt+"\"+filename+"_.xlsx"
でしょうか
なおパスの結合はパスセパレーター(\
)が抜けがちになりますので
System.Io.Path.Combineメソッドを使って
System.Io.Path.Combine(“C:\Users”,username,"\Desktop\済",dt)
のようにしてあげると必要時のみ"\
"を自動的に付けてくれます。
#ただし引数4つが上限なので、5つ以上のフォルダを結合したいときは2回に分ける必要があります。(上記例もファイル名の結合を別で記述する必要があります。)
HANACCHI
(はなっち!UiPath Japan MVP 2019-2022)
September 11, 2019, 5:16am
3
一度変数に格納して、log messageでログ出力して確認するのを習慣化するといいですね。
1 Like
@Yoichi ご回答ありがとうございます。
変更してみたのですが、うまくいかず、どうやら博多の部分を変数にするとerrorがおこるようです。
filenameに書き出される値も確認したのですが正しいようです。
ほかになにか原因として考えられるものありましたら教えていただきたいです。
uibigginer:
If the absolute path “C: \ Users \ aaa-00000 \ Desktop \ Completed \ 201908 \ Hakata_.xlsx” is entered in the path exist, it will be returned as true, but it will be replaced with a variable
“C: \ Users” + username + “\ Desktop \ end” + dt + “” + filename + “_. xlsx”
@uibigginer
If you are getting correct values in variables then use "C: \ Users \ "+"\"+"Desktop \ Completed \ "+dt+"\"+filename.Tostring
it should work for you.
Yoichi
(Yoichi)
September 11, 2019, 6:03am
6
こんにちは
まずはPath Existの中のPathプロパティの値が想定通りかの確認が必要かと思います。
@HANACCHI さんのPOSTのとおり一度文字列全体を変数に格納しても良いですし、Log Message等で同じ式を記載して出力しても良いので、変数を使う場合/使わない場合との差異を確認すべきかと思います。
博多の部分を変数にするとerrorがおこる
どのようなエラーが出ているか共有できますでしょうか?
ありがとうございます。
どうやらwrite lineで書き出した結果、filenameに改行が勝手に入っていたことが原因のようで改行を消したら解決しました。
ありがとうございました。