文章編號: 172711 - 上次校閱: 2007年1月20日 - 版次: 3.1

ACC: FileCopy 陳述式可能不想複製開啟的檔案

系統提示本文適用於您使用的作業系統之外的作業系統。與您不相關的文章內容已停用。
進階: 須具備專家編碼、 互通性,與多使用者技能。

在此頁中

全部展開 | 全部摺疊

徵狀

當您以程式設計的方式複製檔案使用 FileCopy 陳述式在 Visual Basic 應用程式時,可能會收到下列錯誤訊息:
執行階段錯誤 '70'

權限被拒絕

本文假設您已熟悉使用 Visual Basic 應用程式以及建立 Microsoft Access 應用程式使用程式設計與 Microsoft Access 所提供的工具。如需有關 Visual Basic 應用程式,請參閱您的建置應用程式與 Microsoft 存取] 手冊版本。

發生的原因

檔案是目前開啟這可防止 FileCopy 陳述式從複製檔案。

解決方案

而不是使用 FileCopy 陳述式,使用下列方法之一,以程式設計方式將檔案複製。

警告: 下列函式讓您複製開啟的檔案。如果原始程式檔已變更處理程序在複製作業時,目的地檔案可能不完整或損毀。

方法 1-從 Windows API 呼叫 CopyFile() 函式

若要以程式設計方式將檔案複製的一個方法是從 Microsoft Windows API 呼叫 CopyFile() 函式。若要從 Microsoft Windows API 呼叫 CopyFile() 函數,請依照下列步驟執行:
  1. 完成本文稍後的步驟 1 到 4 從在 < 步驟來重現 > 一節。
  2. 建立模組,並輸入下列行,在 [宣告] 區段:
          Option Explicit
    						
          Declare Function apiCopyFile Lib "kernel32" Alias "CopyFileA" _
          (ByVal lpExistingFileName As String, _
          ByVal lpNewFileName As String, _
          ByVal bFailIfExists As Long) As Long
    						
  3. 鍵入下列程序:
          Sub CopyFile(SourceFile As String, DestFile As String)
          '---------------------------------------------------------------
          ' PURPOSE: Copy a file on disk from one location to another.
          ' ACCEPTS: The name of the source file and destination file.
          ' RETURNS: Nothing
          '---------------------------------------------------------------
            Dim Result As Long
             If Dir(SourceFile) = "" Then
                MsgBox Chr(34) & SourceFile & Chr(34) & _
                   " is not valid file name."
             Else
                Result = apiCopyFile(SourceFile, DestFile, False)
             End If
          End Sub
    						
  4. 測試此程序、 偵錯] 視窗中輸入下列命令,然後按下 ENTER:

    CopyFile"< 路徑 Northwind.mdb >","C:\Northwind.mdb"

    請注意 Northwind.mdb 會複製到根資料夾的磁碟機 C,即使它是目前在 Microsoft Access 的另一個執行個體中開啟。

方法 2-呼叫 MS-DOS 複製命令

若要以程式設計方式將檔案複製的另一種方法是為應用程式從 Visual Basic Shell() 函式呼叫 MS-DOS 複製] 命令。若要呼叫 MS-DOS 複製] 指令,請依照下列步驟執行:
  1. 完成本文稍後的步驟 1 到 4 從在 < 步驟來重現 > 一節。
  2. 建立模組和型別之宣告中的這行程區段如果它已經不存在:
          Option Explicit
    						
  3. 如果您使用 Microsoft Windows 95,鍵入下列程序:
          Sub CopyFile(SourceFile As String, DestFile As String)
          '---------------------------------------------------------------
          ' PURPOSE: Copy a file on disk from one location to another.
          ' ACCEPTS: The name of the source file and destination file.
          ' RETURNS: Nothing
          '---------------------------------------------------------------
             Dim CopyString As String
             If Dir(SourceFile) = "" Then
                MsgBox Chr(34) & SourceFile & Chr(34) & _
                   " is not a valid file name."
             Else
                SourceFile = Chr(34) & SourceFile & Chr(34)
                DestFile = Chr(34) & DestFile & Chr(34)
                CopyString = "COMMAND.COM /C COPY " & SourceFile & _
                   " " & DestFile
                Call Shell(CopyString, 0)
             End If
          End Sub
    
       If you are using Microsoft Windows NT, use the same procedure, but
       change the line
    
          CopyString = "COMMAND.COM /C COPY " & SourceFile & _
    
       to:
    
          CopyString = "CMD.EXE /C COPY " & SourceFile & _
    						
  4. 測試此程序、 偵錯] 視窗中輸入下列命令,然後按下 ENTER:

    CopyFile"< 路徑 Northwind.mdb >","C:\Northwind.mdb"

    請注意 Northwind.mdb 會複製到根資料夾的磁碟機 C,即使它是目前在 Microsoft Access 的另一個執行個體中開啟。

狀況說明

這種行為是經過設計規劃的。

其他相關資訊

重製行為的步驟


  1. 啟動 Microsoft Access。
  2. 開啟範例資料庫 Northwind.mdb。
  3. 啟動 Microsoft Access 的新執行個體。
  4. 建立新的空白資料庫。
  5. 建立模組和型別之宣告中的這行程區段如果它已經不存在:
          Option Explicit
    						
  6. 鍵入下列程序:
          Sub CopyFile(SourceFile As String, DestFile As String)
             FileCopy SourceFile, DestFile
          End Sub
    						
  7. 測試此程序、 偵錯] 視窗中輸入下列命令,然後按下 ENTER:

    CopyFile"< 路徑 Northwind.mdb >","C:\Northwind.mdb"

    請注意您會收到 < 徵狀 > 一節中所列之錯誤。

?考

如需有關 FileCopy 陳述式的詳細資訊,搜尋 [說明] 索引 FileCopy 陳述。

這篇文章中的資訊適用於:
  • Microsoft Access 95 Standard Edition
  • Microsoft Access 97 Standard Edition
關鍵字:?
kbmt kbprb kbprogramming KB172711 KbMtzh
機器翻譯機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:172711? (http://support.microsoft.com/kb/172711/en-us/ )
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。
Retired KB Article依現狀不再更新的知識庫內容免責聲明
本文旨在說明 Microsoft 不再提供支援的產品。因此,本文係依「現狀」提供,不會再更新。