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çadas: Requer especialista de codificação, interoperabilidade e habilidades de multiusuário.
Ao copiar programaticamente um arquivo com a declaração FileCopy no Visual Basic for Applications, você receberá a seguinte mensagem de erro:
Erro em tempo de execução '70'
Permissão negada
Este artigo presume que você esteja familiarizado com Visual Basic for Applications e com a criação de aplicativos do Microsoft Access usando as ferramentas de programação fornecidas com o Microsoft Access. Para obter mais informações sobre o Visual Basic for Applications, consulte sua versão do manual "Criando aplicativos com o Microsoft Access".
Em vez de usar a declaração FileCopy, use um dos seguintes métodos para copiar programaticamente o arquivo.
Aviso: As funções a seguintes permitem que você copiar um arquivo aberto. Se o arquivo de origem for alterado enquanto a operação de cópia estiver em andamento, o arquivo de destino pode estar incompleto ou pode estar corrompido.
Método 1 - chamar a função CopyFile() do API do Windows
Um método para copiar programaticamente um arquivo é chamar a função CopyFile() do API do Microsoft Windows. Para chamar a função CopyFile() do API do Microsoft Windows, execute essas etapas:
Conclua a seção as etapas 1 a 4 do "passos para reproduzir o problema" mostrados posteriormente neste artigo.
Criar um módulo e digite as seguintes linhas na declaração seção:
Option Explicit
Declare Function apiCopyFile Lib "kernel32" Alias "CopyFileA" _
(ByVal lpExistingFileName As String, _
ByVal lpNewFileName As String, _
ByVal bFailIfExists As Long) As Long
Digite 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 esse procedimento, digite a seguinte linha na janela Verificação imediata e, em seguida, pressione ENTER:
CopyFile "< caminho para Northwind.mdb >", "C:\Northwind.mdb"
Observe que Northwind.mdb é copiado para a pasta raiz da unidade C, mesmo que ele seja aberto em outra instância do Microsoft Access.
Outro método para copiar programaticamente um arquivo é chamar o comando copy do MS-DOS de uma função Shell() no Visual Basic for Applications. Para chamar o comando copy do MS-DOS, execute estas etapas:
Conclua a seção as etapas 1 a 4 do "passos para reproduzir o problema" mostrados posteriormente neste artigo.
Crie um módulo e o tipo a seguinte linha na declaração seção se não estiver já existe:
Option Explicit
Se você estiver usando o Microsoft Windows 95, digite 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 esse procedimento, digite a seguinte linha na janela Verificação imediata e, em seguida, pressione ENTER:
CopyFile "< caminho para Northwind.mdb >", "C:\Northwind.mdb"
Observe que Northwind.mdb é copiado para a pasta raiz da unidade C, mesmo que ele seja aberto em outra 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 traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes 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/
)
Aviso de Isenção de Responsabilidade sobre Conteúdo do KB Aposentado
Este artigo trata de produtos para os quais a Microsoft não mais oferece suporte. Por esta razão, este artigo é oferecido "como está" e não será mais atualizado.
Quanto esforço foi necessário para seguir os procedimentos deste artigo?
Muito baixo
Baixo
Moderado
Alto
Muito alto
Diga-nos o porque e o que podemos fazer para melhorar esta informação
Obrigado! Seus comentários são usados para nos ajudar a aperfeiçoar o conteúdo de suporte. Para obter mais opções de ajuda, visite a Home Page de Ajuda e Suporte.