VB6.0にてフォルダを移動する命令はありますでしょうか?
.netだとrenameがあるようなのですが、VB6だとどうやら
renameは存在しないようです。
コピー後削除だと不安です。
よろしくお願いします。
Name 旧ファイル名 As 新ファイル名
でできなかったかしら。
うろ覚えでごめんなさい。
ありがとうございます。
Name "C:\from\folder_a" As "D:\test\folder_b"
を試したのですが、ドライブをまたがっての移動はできないようです。
そこで、以下のことを試しました。
'フォルダの移動のテスト
Sub command3_click()
Dim colFilesystem As Object
Dim strOldPath As String
Dim strNewPath As String
Set colFilesystem = CreateObject("Scripting.FileSystemObject")
strOldPath = "C:\from\folder_a"
strNewPath = "D:\test\folder_b"
' ファイルの移動
colFilesystem.MoveFolder strOldPath, strNewPath
' オブジェクトを解放
Set colFilesystem = Nothing
End Sub
この場合、やはり同じドライブ内でのドライブの移動であれば、
問題なく実行できるのですが、
上記のように違うドライブへ移動しようとすると、
実行時エラー'70':
書き込みできません。
というエラーが発生します。
ファイルの属性を調べても特に気になるところはありませんでした。
どなたかわかられるかたいらっしゃいませんでしょうか?
書き込みできない要因としては、以下が挙げられます。
①書き込みできないパスに移動しようとした。
・存在しないドライブや、書き込み権限の無いフォルダが指定されている
②移動したいフォルダまたはサブフォルダ、ファイルなどが使用されていて、
移動できない。
・エクスプローラなどでフォルダを開いている
・Excelなどでファイルを開いている(ファイルがロックされている)
以上のことを調べて下さい。
エラー番号70から察するに、②が原因だと思うのですが。
ありがとうございます。
②に関して調べたのですが、
そのフォルダにはテキストファイルを1つだけおいており、
エディタで開いたりはしていません。フォルダも、エクスプローラ
で表示しないようにしておこなっても、同じエラーが出ました。
たとえば
strOldPath = "C:\from\folder_a"
strNewPath = "C:\Test\folder_c"
なら成功するのですが
strOldPath = "C:\from\folder_a"
strNewPath = "D:\test\folder_b"
なら失敗します。
Dドライブの設定が良くないなどあるのでしょうか
> たとえば
> strOldPath = "C:\from\folder_a"
> strNewPath = "C:\Test\folder_c"
> なら成功するのですが
> strOldPath = "C:\from\folder_a"
> strNewPath = "D:\test\folder_b"
> なら失敗します。
Dドライブ内での移動は成功しますか?
(こんな感じ。)
strOldPath = "D:\from\folder_a"
strNewPath = "D:\test\folder_b"
設定で考えられるのは先のレスの
>①書き込みできないパスに移動しようとした。
> ・存在しないドライブや、書き込み権限の無いフォルダが指定されている
かと思いますが、こちらは確認されましたか?
C:\from フォルダ内の folder_a フォルダを
D:\test フォルダ内へ folder_b と名前を変えて移動したいが、
エラーということですよね。
D:\ドライブには test フォルダはありますか?
C:\ドライブ同士で行った場合はエラーにならなかったとのことですが、
C:\ドライブには Test フォルダが既に存在しているのではありませんか?
確かファイル・フォルダの移動の際、その上位フォルダが存在しない場合は、
エラーになってしまうはずです。
ちなみに、.NET Framework の場合移動先のフォルダが存在しない場合、
自動的に作成してくれますが、VB6ではしてくれません。
確かFileSystemObjectもダメだったはずです。
そこも併せて確認して下さい。
ヘルプを読むと下記が記述されていますね。
このメソッドを使ってボリューム間でフォルダを移動できるのは、
オペレーティング システムでボリューム間のフォルダ移動が
サポートされている場合だけです。
私の環境(Win2000 VB6.0 SP6)でも同様のエラーとなり、
権限等関係なく、フォルダ間の移動は出来ません。
>コピー後削除だと不安です。
それしか方法がないのでは?
コピー失敗したら削除しなきゃいいだけだし...
みなさんありがとうございます。
>ひろさん
>Dドライブ内での移動は成功しますか?
>(こんな感じ。)
> strOldPath = "D:\from\folder_a"
> strNewPath = "D:\test\folder_b"
はい。これはできました
>rakiさん
>D:\ドライブには test フォルダはありますか?
はい。あらかじめ移動先のフォルダは作成してから行っています。
ちなみに、同じドライブ内でも、移動先のフォルダが存在しない場合は
エラーとなってしまいます。
>からすさん
私もそのヘルプを見ました。
私の環境はwindowsXP sp1でVB6.0なのですが、
オペレーティング システムでボリューム間のフォルダ移動が
サポートされていないのでしょうか。
>>コピー後削除だと不安です。
>それしか方法がないのでは?
ですよね。。。もし、コピーエラーを検出できず
削除してしまった場合を考えると怖かったんです><
>コピーエラーを検出できず
エラートラップすれば済む事では?
ツイート | ![]() |