Notifications
Clear all

Criar diretorios e copiar arquivos conforme lista na planilh

7 Posts
1 Usuários
0 Reactions
749 Visualizações
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Olá pessoal,

Estou com uma questão aqui e ainda não consegui fazer funcionar, e espero a ajuda de vocês.

Tenho uma planilha q na coluna A tenho uma lista de nomes de arquivos:
A1 atestado_1.jpg
A2 atestado_2.jpg
A3 atestado_3.jpg
A4 atestado_4.jpg
...
assim por diante, lembrando que não é uma quantidade fixa de arquivos, posso ter 10 arquivos como posso ter 50 arquivos
estes arquivos existem no HD dentro de uma pasta base (M:atestados)
na coluna B tenho uma listagem de nomes

B1 JOSE DA SILVA
B2 PEDRO PEREIRA
B3 ALFREDO CARLOS
B4 MARIA JOSE
...
assim por diante.

a quantidade de linhas sempre será igual da coluna A e B.

Baseado nisso, o que eu preciso são duas coisas:
1ª - criar pastas (diretórios) dentro da pasta base, de acordo com cada nome que esta´na coluna B da planilha
exemplo:
M:atestadosJOSE DA SILVA
M:atestadosPEDRO PEREIRA
M:atestadosALFREDO CARLOS
... assim por diante

2ª - após criada as pastas, então copiar cada arquivo atestado.jpg para sua pasta de destino conforme a sequencia da planilha, ou seja
exemplo:
A1 atestado_1.jpg move para JOSE DA SILVA
A2 atestado_2.jpg move para PEDRO PEREIRA
A3 atestado_3.jpg move para ALFREDO CARLOS
A4 atestado_4.jpg move para MARIA JOSE

assim sucessivamente... até o fim da lista.

acho q fui claro... tem como fazer isso pessoal? eu até consegui o código para criar as pastas, mas para copiar cada arquivo pra dentro de cada pasta com nome diferente não to dando jeito, sou meio leigo nisso.

Obrigado

Matheus

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 04/11/2013 12:35 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Experimente (considerando que os dados iniciem em A2/B2)

Option Explicit
Sub BackupGeral()
Dim FSO As Object
Dim NewName As String, cArqu As String
Dim lRow As Long, i As Long
Dim sPath As String

'Obtem caminho onde está o arquivo, se não indicado considera mesmo caminho da planilha aberta
If Sheets("Plan1").Range("K1") = "" Then
    sPath = ThisWorkbook.Path & Application.PathSeparator
Else
    sPath = Sheets("plan1").Range("K1").Value
End If

'Acrescenta a barra se necessario
If Right(sPath, 1) <> "" Then
    sPath = sPath & ""
Else
    sPath = sPath
End If
'Verifica se o diretorio exite, caso não sai da rotina
    If (Dir(sPath, vbDirectory) = "") Then
        MsgBox "Diretório - " & sPath & " Não encontrado?"
        Exit Sub
    End If
'Obtem ultimalinha com dados na coluna A
lRow = Cells(Cells.Rows.Count, "A").End(xlUp).Row
'Altera diretorio padrão para onde está o arquivo
ChDir sPath
For i = 2 To lRow

'Novo diretorio
NewName = Sheets("Plan1").Range("B" & i).Value
'Arquivo
cArqu = Sheets("Plan1").Range("A" & i).Value

'Verifica se o diretorio existe, se não existir, cria
    If (Dir(sPath & NewName, vbDirectory) = "") Then
        MkDir (sPath & NewName)
    Else
        MsgBox "Diretório - " & NewName & " Já existe"
    End If
'Verifica se o arquivo já existe, se existir, deleta
    If (Dir(cArqu) = "") Then
        MsgBox "Arquivo - " & cArqu & " Não encontrado"
    End If
'Move o arquivo para o novo diretorio
Set FSO = CreateObject("scripting.filesystemobject")
FSO.MoveFile Source:=sPath & cArqu, Destination:=sPath & NewName & ""
Next
End Sub

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 04/11/2013 1:21 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Nossa!!, não imaginava que a ajuda viria tão rápido, muito obrigado. Porém o código não está funcionando totalmente certo.

abri uma planilha em branco, na celula K1 coloquei o caminho da pasta base (d:teste)
dentro da pasta base coloquei 14 arquivos com o nome atestado_1.pdf ao atestado_14.pdf
relacionei estes nomes de arquivo na coluna A da planilha a partir da linha 2
na coluna B relacione os nomes das pessoas também a partir da linha 2
copiei o código e colei dentro de um módulo do VBA no Excel e depois mandei executar via macro

ocorreu o seguinte:
erro em tempo de execução: caminho não encontrado
são criadas na pasta base apenas os diretorios referentes aos 3 primeiros nomes que estão na coluna B (JOAO DA SILVA, MARIA JOSE, PAULO RICARDO) e são movidos para dentro de suas respectivas pastas apenas o 1º e o 2º arquivos. ou seja o arquivo atestado_1.pdf é copiado pra dentro da pasta JOAO DA SILVA, o arquivo atestado_2.pdf é movido para a pasta MARIA JOSE, a pasta PAULO RICARDO fica vazia e dá o erro de execução.

oUTRA COISA eu comentei as seguintes linhas do código:
Verifica se o arquivo já existe, se existir, deleta
' If (Dir(cArqu) = "") Then
' MsgBox "Arquivo - " & cArqu & " Não encontrado"
' End If
Pois estava apagando o arquivo da pasta antes de move-lo para a sub-pasta.

é isso.

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 04/11/2013 2:03 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Antes de "devolver" o codigo, fiz um teste aqui e não tive nenhum dos problemas citados.
Dentro do for ... e criado o diretorio e movido o arquivo. Se possivel disponibilizar seu arquivo (altere nomes se necessario) não precisa enviar os pdf ou jpg que simulo aqui.

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 04/11/2013 2:09 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Pois é, fiz uma depuração aqui no VBA e não percebi onde tá o erro.

Estou enviando o arquivo.

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 04/11/2013 2:20 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Aparentemente o erro deve-se ao fato do nome Cleomar ter um caracter adicional no final.
Veja no anexo

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 04/11/2013 2:53 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

era isso mesmo, tinha um caractere " " espaço vazio no final do nome, terei que tratar essas listas antes de jogar aqui.
o resto funcionou muito bem, muito obrigado companheiro. obrigado mesmo. ainda bem que existem pessoas que se dispõe a doar de seu tempo e conhecimento. Deus lhe abençoe.

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 04/11/2013 2:58 pm