Notifications
Clear all

Mover vários arquivos para lugares diferentes!

7 Posts
3 Usuários
0 Reactions
1,519 Visualizações
(@douglasstz)
Posts: 0
New Member
Topic starter
 

Alguém pode me auxiliar em uma macro, gostaria de mover uma lista de arquivos que quero determinar em uma coluna do excel o link para uma lista de lugares diferentes que quero determinar em outra coluna, a macro abaixo estou usando porém ela serve apenas de 1 caminho para outro:

Option Explicit
Public Declare Function SHFileOperation Lib "shell32.dll" _
Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) _
As Long
Public Const FO_COPY As Long = &H2
Public Const FOF_ALLOWUNDO As Long = &H40
Public Type SHFILEOPSTRUCT
hWnd As Long
wFunc As Long
pFrom As String
pTo As String
fFlags As Integer
fAnyOperationsAborted As Boolean
hNameMappings As Long
lpszProgressTitle As String
End Type
Public Sub CopiarArq(Origem As String, Destino As String)
Dim RST As Long
Dim FLOP As SHFILEOPSTRUCT
FLOP.hWnd = 0
FLOP.wFunc = FO_COPY
FLOP.pFrom = Origem & vbNullChar & vbNullChar
FLOP.pTo = Destino & vbNullChar & vbNullChar
FLOP.fFlags = FOF_ALLOWUNDO
RST = SHFileOperation(FLOP)

If RST <> 0 Then
MsgBox Err.LastDllError, vbCritical Or vbOKOnly
Else
If FLOP.fAnyOperationsAborted <> 0 Then
MsgBox "Falha na cópia!!!", vbCritical Or vbOKOnly
End If
End If
End Sub
Sub Copiar()

CopiarArq Range("h1").Value, Range("I1").Value

End Sub

Eu consigo alterar apenas esta parte:

Sub Copiar()

CopiarArq Range("h1").Value, Range("I1").Value

End Sub

não posso usar o Range para mais de uma celula no conceito acima..

 
Postado : 17/08/2016 6:00 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Douglasstz

Seja bem-vindo ao fórum!

Já excluí o tópico que você criou em " Recém Chegados - Apresente-se aqui", pois ali é exclusivo para a apresentação dos novos usuários e não é permitido postar dúvidas.

Como você não se apresentou por lá, segue alguns links com leitura obrigatória:

Para facilitar a tua participação no fórum, sugiro tomar conhecimento do conteúdo dos links abaixo:
viewtopic.php?f=7&t=203
viewtopic.php?f=7&t=7903
viewtopic.php?f=7&t=3841
viewtopic.php?f=7&t=16757
viewtopic.php?f=7&t=12600
viewtopic.php?f=7&t=3371

[]s
Patropi - Moderador

 
Postado : 17/08/2016 6:56 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bem o titulo é mover, mas a função exposta/utilizada é copiar.
Sem muita analise experimente:

Sub Copiar()
Dim x As Integer
'loop pelas linhas a serem copiadas
For x = 1 To 100
    CopiarArq Range("h" & x).Value, Range("I" & x).Value
Next
 
Postado : 17/08/2016 7:04 am
(@douglasstz)
Posts: 0
New Member
Topic starter
 

Obrigado! Deu certo mas está com um problema agora, antes quando eu executava se a pasta não existisse ela era criada, agora se ela não existe da erro.

 
Postado : 17/08/2016 7:37 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Como disse apenas propuz a introdução do loop, não testei.
Na rotina não "vi" em local algum algo que se propoe a criar um diretório,casonão exista.
Provavelmente, como utiliza manipulação de API do windows, seja algum gatilho, que com o uso consecutivo seja sobreposto.
Não conheço muito de manipulação de função do sistema, assim se algum colega não puder auxilia-lo; no final de semana tentarei algum procedimento diferente que lhe auxilie.

 
Postado : 17/08/2016 2:15 pm
(@nelson-s)
Posts: 0
New Member
 

Teste essa macro e veja se funciona para o seu caso.

 
Postado : 22/08/2016 12:35 pm
(@douglasstz)
Posts: 0
New Member
Topic starter
 

Muito obrigado! Deu certo nem sei como agradecer!

 
Postado : 22/08/2016 12:59 pm