Access (VBA)

Access VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(指定なし : 指定なし)
FileSystemObjectのCOPY使用で書き込みエラー発生
投稿日時: 18/11/09 10:41:14
投稿者: けん太

以下のロジックを組んでいますが、「fso.CopyFile bf_file2, kokuchi_pass」の
場所で、書き込みエラーが発生します。
 
発生原因と回避方法を知りたいです。
 
 
    Set fso = CreateObject("Scripting.FileSystemObject")
    bf_pass = CR_TARGET
    bf_file = Dir(bf_pass)
 
    Do While bf_file <> ""
     
            bf_file2 = bf_pass & bf_file
            '
            '対象ファイルから文字列を検索
            '
            lCnt = GetTargetCnt(bf_file2, in_txt)
            '
            '検索OKならファイルコピー
            '
            If lCnt >= 1 Then
                af_file2 = CR_TARGET & "old\" & bf_file
                af_folder = CR_TARGET & "old\"
             
                '存在チェック
                If (fso.FileExists(bf_file2)) = True Then 'コピー元存在チェック
                    If (fso.FileExists(af_file2)) = False Then '移動先確認
             
                        fso.CopyFile bf_file2, kokuchi_pass
                        'ファイル移動
                        'fso.MoveFile bf_file2, af_folder
                    Else
                        retval = MsgBox("クレ無効データ(告知)が存在します。手動削除願います。")
                    End If
                Else
                    retval = MsgBox("クレ無効データ(告知)がありません。")
                End If
    
                Sleep 1000 '1秒停止
            End If
     
           bf_file = Dir()
    Loop

回答
投稿日時: 18/11/09 11:04:12
投稿者: sk

引用:
fso.CopyFile bf_file2, kokuchi_pass

・kokuchi_pass の値を設定している箇所が見当たらない。
 少なくとも Do While ... Loop 文の中には記述されていないので、
 同じファイルパスに対してファイルコピーが何度も繰り返されかねない
 
・その時点の kokuchi_pass の値が何であるかが分からない。
 
・kokuchi_pass の値が何らかのファイルパスを表す文字列であるとして、
 ファイルのコピー先となるフォルダが実在するのかどうかが分からない。
 (それをチェックする処理もない)
 
・コピー先となるフォルダが実在するとして、
 そのフォルダに対する書き込み権限の有無が判らない。

投稿日時: 18/11/09 11:16:00
投稿者: けん太

SKさん
 
  ご回答ありがとうございます。
 

引用:
kokuchi_pass の値を設定している箇所が見当たらない。

 
ループの外で、下記で取得しています。
 
    With Application.FileDialog(msoFileDialogFolderPicker)
 
        .InitialFileName = kokuchi_pass
        .Title = "対象の告知フォルダを選択"
        .AllowMultiSelect = False
        If .Show = True Then
             kokuchi_pass = .SelectedItems(1)
 
        End If
         
    End With
     
    If kokuchi_pass = "" Then
        MsgBox ("フォルダを選択してください")
        Exit Sub
    End If
 
引用:
・コピー先となるフォルダが実在するとして、
 そのフォルダに対する書き込み権限の有無が判らない

 
  ループ内の下記コードで、MOVEがコメントになっておりますが、
  EXCELではMOVEは動作しております。
  なので、書き込み先のフォルダ権限はあると認識しています。
  (ちなみにcopyは試していません。) 
 
           fso.CopyFile bf_file2, kokuchi_pass
          'fso.MoveFile bf_file2, af_folde
 
認識に誤りがあるのでしょうか?
 
 

投稿日時: 18/11/09 11:41:44
投稿者: けん太

失礼いたしました。
書き込み先フォルダ名の最後、"\"を付けていなかったようです。
 
SKさん ありがとうございました
クローズいたします。