ERRO DE IMPORTAÇÃO ...
 
Notifications
Clear all

ERRO DE IMPORTAÇÃO DE DADOS PLAN ABERTA

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

Pessoal, Bom Dia!
Estou com um dúvida.
Eu crieI uma macro que leva informações de um formulário para outra planilha. Se a planilha na qual vai receber os dados estiver fechada, a macro leva os dados sem problema. Porém, se algum outro usuário estiver com ela aberta, não funciona. Como posso resolver isso.
Eu penso que tinha que ser algo assim: Se a planilha estiver aberta, faça isso,
se fechada isso...

Private Sub CommandButton_Enviar_Click()

'Cria a variavel linhavazia
Dim linhavazia As Long

'Confere se o campo segmento foi preenchido
If cboText_Segmento = "C&P" Then

'abre a planilha de destino e seleciona a aba "Banco de Dados"
Workbooks.Open ("\SERVIDORCOMCOM2016Prospecção e Vendas InternasPlanilhas de Mapeamento 2016.2Planilha de Mapeamento 2016.2 - C&P.xlsm")
Sheets("Banco de Dados").Select

'conta quantas informações foram inseridas na coluna A da aba dados
linhavazia = WorksheetFunction.CountA(Range("A:A")) + 1

'Insere informações da aba dados
Cells(linhavazia, 3).Value = Text_CNPJ.Value
Cells(linhavazia, 1).Value = CDate(Text_Data.Value)

'Salva e fecha a planilha de destino
ActiveWorkbook.Save
ActiveWorkbook.Close

End If

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

 
Postado : 12/07/2016 5:07 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

gracielli, não tenho como testar em arquivos na Rede, mas ajustando conforme dicas do link - http://stackoverflow.com/questions/9373082/detect-whether-excel-workbook-is-already-open, copie as rotina e veja se é isto :

Dim sFile2 As String

Private Sub CommandButton_Enviar_Click()
    Dim sFile1 As String
    Dim wb As Workbook
    
    'Cria a variavel linhavazia
    Dim linhavazia As Long
    
    'Confere se o campo segmento foi preenchido
    If cboText_Segmento = "C&P" Then
    
        Set wb = GetWorkbook("\SERVIDORCOMCOM2016Prospecção e Vendas InternasPlanilhas de Mapeamento 2016.2Planilha de Mapeamento 2016.2 - C&P.xlsm")
        
        sFile1 = Dir(sFile2)
        
        If Not wb Is Nothing Then
        
        MsgBox sFile1 & " está aberto em uso", vbOKOnly + vbInformation
    
    Else
        
        MsgBox sFile1 & " não está em uso e será aberto !", vbOKOnly + vbExclamation
        
        'abre a planilha de destino e seleciona a aba "Banco de Dados"
        Set wb = Workbooks.Open(sFile2)
        
        Sheets("Banco de Dados").Select
        
        'conta quantas informações foram inseridas na coluna A da aba dados
        linhavazia = WorksheetFunction.CountA(Range("A:A")) + 1
        
        'Insere informações da aba dados
        Cells(linhavazia, 3).Value = Text_CNPJ.Value
        Cells(linhavazia, 1).Value = CDate(Text_Data.Value)
        
        'Salva e fecha a planilha de destino
        ActiveWorkbook.Save
        ActiveWorkbook.Close
        
        End If
        
    End If
    
End Sub

Public Function GetWorkbook(ByVal sFullName As String) As Workbook

    Dim sFile As String
    Dim wbReturn As Workbook

    sFile = Dir(sFullName)

    On Error Resume Next
        Set wbReturn = Workbooks(sFile)

             sFile2 = sFullName
             
    On Error GoTo 0

    Set GetWorkbook = wbReturn

End Function

[]s

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

 
Postado : 12/07/2016 8:33 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Mauro Coutinho, Boa Tarde!
Infelizmente não funcionou, está reportando Erro em tempo de execução: O objeto é obrigatório

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

 
Postado : 14/07/2016 12:26 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Complementando...
Mas pelo que eu entendi do seu código, se quando eu tiver tentando exportar os dados e a planilha estiver aberta, ele simplesmente vai avisar, mas não vai copiar. É isto mesmo?
Na verdade eu queria que independente da planilha estiver aberta ou não, que ele conseguisse exportar os dados da mesma forma.
Será que é possível?
É como se dois usuários estivesse usando a mesma planilha e inserindo dados simultaneamente.

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

 
Postado : 14/07/2016 12:38 pm