none
Dúvida copiar e colar arquivos + criar pasta caso não exista o caminho RRS feed

  • Pergunta

  • Estou usando o código abaixo para copiar X arquivos para Y lugares diferentes, porém devido a alteração para funcionar em várias células parou a função de 'criar pasta' caso o caminho não exista, agora a única coisa que cria é um arquivo sem extensão com o nome como se fosse o nome da pasta:

    Alguém sabe como faço para criar uma pasta caso ela não exista dentro da VBA abaixo?

    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()
    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

    End Sub

    quarta-feira, 17 de agosto de 2016 17:10

Todas as Respostas

  • Olá Douglas,

    Tem algum motivo pra usar API pra essas operações ao invés dos comandos em VBA? Eles são tão simples.

    O código que você postou parece ok. Poderia colocar aqui um exemplo dos dados nas colunas H e I?

    Alexandre


    • Editado Atadolfo sexta-feira, 19 de agosto de 2016 13:43
    sexta-feira, 19 de agosto de 2016 02:09
  • Duglas,

    Ao inserir um código no fórum, utilize blocos de código. Para utilizar essa ferramenta, clique no botão cuja legenda é “Inserir bloco de código” na barra do editor de mensagens do fórum. Uma janela aparecerá onde você deverá colar seu código cru na caixa de texto à esquerda. Então, selecione a opção Vb.Net na caixa de combinação que você verá em cima à esquerda e depois clique no botão Inserir.

    ---

    Sobre sua dúvida, esqueça essa API. Já experimentou usar a instrução FileCopy?


    http://www.ambienteoffice.com.br - http://www.clarian.com.br

    sexta-feira, 19 de agosto de 2016 13:00
    Moderador