Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.
Avançado: Requer conhecimentos avançados sobre codificação, interoperabilidade e multi-utilizador.
Quando copiar programaticamente um ficheiro com a instrução FileCopy no Visual Basic for Applications, poderá receber a seguinte mensagem de erro:
Run-time error '70'
Permissão negada
Este artigo pressupõe que está familiarizado com o Visual Basic for Applications e criação de aplicações do Microsoft Access utilizando as ferramentas de programação fornecidas com o Microsoft Access. Para mais informações sobre o Visual Basic for Applications, consulte a versão do manual "Criar aplicações com o Microsoft Access".
Em vez de utilizar a instrução FileCopy, utilize um dos seguintes métodos para programaticamente copiar o ficheiro.
Aviso: As funções seguintes permitem-lhe copiar um ficheiro aberto. Se o ficheiro de origem for alterado enquanto a operação de cópia está em processo, o ficheiro de destino pode estar incompleto ou poderá ficar danificado.
Método 1 - chamar a função CopyFile() da API do Windows
Um método de forma programática copiar um ficheiro é chamar a função CopyFile() da API do Microsoft Windows. Para chamar a função CopyFile() da API do Microsoft Windows, siga estes passos:
Conclua os passos 1 a 4 a partir de "passos para reproduzir o comportamento" secção deste artigo.
Crie um módulo e escreva as seguintes linhas nas declarações de secção:
Option Explicit
Declare Function apiCopyFile Lib "kernel32" Alias "CopyFileA" _
(ByVal lpExistingFileName As String, _
ByVal lpNewFileName As String, _
ByVal bFailIfExists As Long) As Long
Escreva o seguinte procedimento:
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
Para testar este procedimento, escreva a seguinte linha na janela de depuração e, em seguida, prima ENTER:
CopyFile "< caminho para a base de dados adamastor.mdb >", "C:\Northwind.mdb"
Tenha em atenção que a base de dados Adamastor.mdb é copiada para a pasta raiz da unidade C, mesmo que seja aberta noutra instância do Microsoft Access.
Outro método para programaticamente copiar um ficheiro é chamar o comando Copiar MS-DOS a partir de uma função Shell() no Visual Basic for Applications. Para chamar o comando copy do MS-DOS, siga estes passos:
Conclua os passos 1 a 4 a partir de "passos para reproduzir o comportamento" secção deste artigo.
Crie um módulo e escreva a seguinte linha de declarações secção se não estiver já existir:
Option Explicit
Se estiver a utilizar o Microsoft Windows 95, escreva o seguinte procedimento:
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 & _
Para testar este procedimento, escreva a seguinte linha na janela de depuração e, em seguida, prima ENTER:
CopyFile "< caminho para a base de dados adamastor.mdb >", "C:\Northwind.mdb"
Tenha em atenção que a base de dados Adamastor.mdb é copiada para a pasta raiz da unidade C, mesmo que seja aberta noutra instância do Microsoft Access.
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 172711
(http://support.microsoft.com/kb/172711/en-us/
)
Exclusão de Responsabilidade para Conteúdo sem Suporte na KB
Este artigo foi escrito sobre produtos para os quais a Microsoft já não fornece suporte. Por conseguinte, este artigo é oferecido "tal como está" e deixará de ser actualizado.
Quanto esforço foi necessário para seguir os procedimentos deste artigo?
Muito baixo
Baixo
Moderado
Alto
Muito alto
O que podemos fazer para melhor estas informações?
Para proteger a sua privacidade, não inclua as informações de contacto nos comentários.
Obrigado! Os seus comentários serão utilizados para nos ajudar a melhorar o conteúdo do suporte. Para obter mais opções de assistência, visite a Home Page da Ajuda e Suporte.