System.CharをSystem.Stringに、、、

いつもお世話になっております。

現在、GetDirectoryNameメソッドでパスの情報を返して
GetFileNameで名前を返す方法で、フォルダのコピーを行おうと考えております。

しかし、実行しますと以下のエラーがでてしまいます。
解決方法等はありますでしょうか。
また、上記方法以外で、簡単にフォルダ移動ができる方法がありましたら
ご教示いただけますでしょうか。

【エラー】
繰り返し (フォルダ移動)Sub: 型 ‘System.Char’ のオブジェクトを型 ‘System.String’ にキャストできません。

何か式が誤っているような気がしますね。
入れている式を共有いただくことは出来ますでしょうか。

ワークフロー自体は見た感じでは違和感ないですね。
エラーメッセージから、何かしらの変数・引数がSystem.Charで渡ってしまっていることが原因というのはわかるのですが、心当たりになるものはありそうでしょうか。
エラーメッセージが再現できるのであれば、スタックトレース(エラーメッセージの詳細)をいただけるともう少しなにかわかるかもしれません。

こんにちは

例外の直接の原因は以下のようです。

【繰り返しアクティビティ】
要素:[conFoldar] コレクション:[System.IO.Path.GetDirectoryName(フォルダパス)]

GetDirectoryNameメソッドは文字列(String)を返します。これをFor Eachでイテレートすると
文字列の1文字1文字をcharとして繰り返します。今conFoldarがStringなので、これにCast
できないということです。

そのため、やりたいこととしては、おそらく

余談として、System.IO.Directory.GetDirectories(フォルダパス,“*”)
でも試してみました。

の方が正しいように思えます。

【コードを呼び出しアクティビティ】※フォルダコピーをしております。
My.Computer.FileSystem.CopyDirectory(conFoldarName(移動元フォルダパス), 移行先フォルダパス, _
FileIO.UIOption.AllDialogs, FileIO.UICancelOption.DoNothing)

の部分でコピー元のディレクトリ名を、新しいパスに明示的に加えると、良いように思えます。

1 Like

こんにちは

移動元のディレクトリがconFolderに入っているのであれば
現在移動先フォルダパスの部分を以下に変更すれば
良いように思えます。

System.IO.Path.Combine(移行先フォルダパス,System.IO.Path.GetFileName(conFolder))

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.