Notifications
Clear all

Parar Conexão

11 Posts
2 Usuários
0 Reactions
2,470 Visualizações
(@gustavo_ada)
Posts: 12
Active Member
Topic starter
 

Bom dia amigos!
Estou com o seguinte problema...
tenho 4 arquivos... um chamado "Cadastro Equipamento.xlsm", outro "Cadastro Transporte.xlsm",outro chamado "Cadastro Nota Fiscal.xlsm" e outro "Pesquisa.xlsm"

No "pesquisa.xlsm", fiz uma conexao com as outras 3 planilhas..
Quando eu abro ela atualiza automaticamente e pega os dados das outras planilhas.. até ai beleza...
so que quando eu quero alterar o valor em qualquer uma das 3 planilhas e tento abrir.. ela fala que so pode abrir no modo leitura, pois o arquivo já está sendo usado...
preciso de uma macro que pare com a conexão para que eu possa abrir os outros arquivos normalmente..

Para atualizar, o comando que eu tenho é:

ActiveWorkbook.RefreshAll

Grato pela colaboração de todos.

 
Postado : 16/06/2012 8:27 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Gustavo, RefreshAll é apenas para atualização de todos os dados da planilha, não envolvendo "abertura" de planilhas em si. Qdo disse "fiz luma conexão", lque tipo de conexão é essa?

 
Postado : 16/06/2012 1:51 pm
(@gustavo_ada)
Posts: 12
Active Member
Topic starter
 

Uma das conexões é a seguinte:

Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=\SEVEN-PCUsersSEVENDesktopNova pastaminhaempresaExcelCadastro Clientes.xlsm;Mode=Share Deny Write;Extended Properties="Jet OLEDB:Bypass UserInfo Validation=False;Jet OLEDB:Bypass UserInfo Validation=False;Jet OLEDB:Bypass UserInfo Validation=False;HDR=YES;";Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Engine Type=37;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False;Jet OLEDB:Support Complex Data=False

Tem alguma sugestao?

 
Postado : 25/03/2013 12:19 pm
(@gustavo_ada)
Posts: 12
Active Member
Topic starter
 

Já fiz de tudo, olhei em todos os lugares e não achei solução....

se alguém souber.. pode dá uma força.

 
Postado : 27/03/2013 1:18 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Vc não especificou como são feitas as conexões, em vba normalmente são:

Public Sub Conectar()
    Dim nConectar As String
    nConectar = "Provider=Microsoft.Jet.oledb.4.0;Data Source=" & ThisWorkbook.Path & "Base.mdb"
    Conn.ConnectionString = nConectar
    Conn.Open   
End Sub

e para desconectar:

Public Sub Desconectar()
    Conn.Close
End Sub

Caso no resulte ok, então poste seu(s) exemplo(s) para que possamos avaliar com mais propriedade (poucos dados e ficticios se assim desejar)

 
Postado : 27/03/2013 1:33 pm
(@gustavo_ada)
Posts: 12
Active Member
Topic starter
 

Eu não tenho muito conhecimento no assunto,
a macro que foi elabora é a seguinte.
preciso somente que "pare" essa conexão para que eu possa abrir os outros arquivos sem ser no modo leitura.

Sub mudarconexao()
'
' mudarconexao Macro
'

'

  Unload UserForm1
    With ActiveWorkbook.Connections("Cadastro Clientes").OLEDBConnection
        .BackgroundQuery = True
        .CommandText = Array("'BANCO DE DADOS CLIENTE$'")
        .CommandType = xlCmdTable
        .Connection = Array( _
        "OLEDB;Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=C:UsersgustavoDesktopNova pastaTERRAPLENAGEM GUIMARAES " _
        , _
        "SERRA LTDAExcelCadastro Clientes.xlsm;Mode=Share Deny Write;Extended Properties=""Jet OLEDB:Bypass UserInfo Validation=False;Je" _
        , _
        "t OLEDB:Bypass UserInfo Validation=False;Jet OLEDB:Bypass UserInfo Validation=False;Jet OLEDB:Bypass UserInfo Validation=False;H" _
        , _
        "DR=YES;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Engine Type=37;Jet OLEDB:Database Locking Mode=0;Jet " _
        , _
        "OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="""";Jet OLEDB:Create System " _
        , _
        "Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica R" _
        , "epair=False;Jet OLEDB:SFP=False;Jet OLEDB:Support Complex Data=False")
        .RefreshOnFileOpen = False
        .SavePassword = False
        .SourceConnectionFile = ""
        .SourceDataFile = _
        "C:UsersgustavoDesktopTerraplenagem Guimarães Serra LTDAExcelCadastro Clientes.xlsm"
        .ServerCredentialsMethod = xlCredentialsMethodIntegrated
        .AlwaysUseConnectionFile = False
    End With
    With ActiveWorkbook.Connections("Cadastro Clientes")
        .Name = "Cadastro Clientes"
        .Description = ""
    End With
    ActiveWorkbook.Connections("Cadastro Clientes").Refresh
    With ActiveWorkbook.Connections("Cadastro de Nota").OLEDBConnection
        .BackgroundQuery = True
        .CommandText = Array("NOTA$")
        .CommandType = xlCmdTable
        .Connection = Array( _
        "OLEDB;Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=C:UsersgustavoDesktopNova pastaTERRAPLENAGEM GUIMARAES " _
        , _
        "SERRA LTDAExcelCadastro de Nota.xlsm;Mode=Share Deny Write;Extended Properties=""Jet OLEDB:Bypass UserInfo Validation=False;Jet" _
        , _
        " OLEDB:Bypass UserInfo Validation=False;Jet OLEDB:Bypass UserInfo Validation=False;Jet OLEDB:Bypass UserInfo Validation=False;HD" _
        , _
        "R=YES;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Engine Type=37;Jet OLEDB:Database Locking Mode=0;Jet O" _
        , _
        "LEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="""";Jet OLEDB:Create System D" _
        , _
        "atabase=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Re" _
        , "pair=False;Jet OLEDB:SFP=False;Jet OLEDB:Support Complex Data=False")
        .RefreshOnFileOpen = False
        .SavePassword = False
        .SourceConnectionFile = ""
        .SourceDataFile = _
        "C:UsersgustavoDesktopTerraplenagem Guimarães Serra LTDAExcelCadastro de Nota.xlsm"
        .ServerCredentialsMethod = xlCredentialsMethodIntegrated
        .AlwaysUseConnectionFile = False
    End With
    With ActiveWorkbook.Connections("Cadastro de Nota")
        .Name = "Cadastro de Nota"
        .Description = ""
    End With
    ActiveWorkbook.Connections("Cadastro de Nota").Refresh
    With ActiveWorkbook.Connections("Cadastro Equipamento2").OLEDBConnection
        .BackgroundQuery = True
        .CommandText = Array("equipamentos$")
        .CommandType = xlCmdTable
        .Connection = Array( _
        "OLEDB;Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=C:UsersgustavoDesktopNova pastaTERRAPLENAGEM GUIMARAES " _
        , _
        "SERRA LTDAExcelCadastro Equipamento2.xlsm;Mode=Share Deny Write;Extended Properties=""Jet OLEDB:Bypass UserInfo Validation=Fals" _
        , _
        "e;Jet OLEDB:Bypass UserInfo Validation=False;Jet OLEDB:Bypass UserInfo Validation=False;Jet OLEDB:Bypass UserInfo Validation=Fal" _
        , _
        "se;HDR=YES;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Engine Type=37;Jet OLEDB:Database Locking Mode=0;" _
        , _
        "Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="""";Jet OLEDB:Create Sys" _
        , _
        "tem Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Repli" _
        , "ca Repair=False;Jet OLEDB:SFP=False;Jet OLEDB:Support Complex Data=False")
        .RefreshOnFileOpen = False
        .SavePassword = False
        .SourceConnectionFile = ""
        .SourceDataFile = _
        "C:UsersgustavoDesktopTerraplenagem Guimarães Serra LTDAExcelCadastro Equipamento2.xlsm"
        .ServerCredentialsMethod = xlCredentialsMethodIntegrated
        .AlwaysUseConnectionFile = False
      
    End With
    With ActiveWorkbook.Connections("Cadastro Equipamento2")
        .Name = "Cadastro Equipamento2"
        .Description = ""
    End With
    ActiveWorkbook.Connections("Cadastro Equipamento2").Refresh
    With ActiveWorkbook.Connections("Cadastro Transportes").OLEDBConnection
        .BackgroundQuery = True
        .CommandText = Array("Transportes$")
        .CommandType = xlCmdTable
        .Connection = Array( _
        "OLEDB;Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=C:UsersgustavoDesktopNova pastaTERRAPLENAGEM GUIMARAES " _
        , _
        "SERRA LTDAExcelCadastro Transportes.xlsm;Mode=Share Deny Write;Extended Properties=""Jet OLEDB:Bypass UserInfo Validation=False" _
        , _
        ";Jet OLEDB:Bypass UserInfo Validation=False;Jet OLEDB:Bypass UserInfo Validation=False;Jet OLEDB:Bypass UserInfo Validation=Fals" _
        , _
        "e;HDR=YES;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Engine Type=37;Jet OLEDB:Database Locking Mode=0;J" _
        , _
        "et OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="""";Jet OLEDB:Create Syst" _
        , _
        "em Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replic" _
        , "a Repair=False;Jet OLEDB:SFP=False;Jet OLEDB:Support Complex Data=False")
        .RefreshOnFileOpen = False
        .SavePassword = False
        .SourceConnectionFile = ""
        .SourceDataFile = _
        "C:UsersgustavoDesktopTerraplenagem Guimarães Serra LTDAExcelCadastro Transportes.xlsm"
        .ServerCredentialsMethod = xlCredentialsMethodIntegrated
        .AlwaysUseConnectionFile = False
        
    End With
    With ActiveWorkbook.Connections("Cadastro Transportes")
        .Name = "Cadastro Transportes"
        .Description = ""
    End With
    ActiveWorkbook.Connections("Cadastro Transportes").Refresh

se não fui claro, me desculpe, pois tenho pouco conhecimento nesse assunto.

 
Postado : 28/03/2013 7:14 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Experimente:

Sub Fecha()
    ThisWorkbook.ConnectionsDisabled
End Sub
 
Postado : 28/03/2013 9:23 am
(@gustavo_ada)
Posts: 12
Active Member
Topic starter
 

Eu li e parece que estou usando o QueryTables, que é uma conexão pelo próprio Excel. Eu realmente não sei como fazer a desconexão.

 
Postado : 28/03/2013 9:27 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Normalmente em query table não há desconexão.
Por isso teste o codigo do post anterior, o que faz: Desativa as conexão/links do arquivo, talvez o atenda.

    Sub Fecha()
        ThisWorkbook.ConnectionsDisabled
    End Sub
 
Postado : 28/03/2013 9:39 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Desculpe mas eu não olhei com atenção sua postagem,veja se as rotinas abaixo lhe ajude.

Sub TenteQuebrarLinks()
Dim LinksList As Variant
Dim i As Integer
LinksList = ActiveWorkbook.LinkSources(Type:=xlLinkTypeExcelLinks)
If IsArray(LinksList) Then
For i = LBound(LinksList) To UBound(LinksList)
ActiveWorkbook.BreakLink Name:=LinksList(i), Type:=xlLinkTypeExcelLinks
Next i
End If
End Sub


Sub EliminarConec()
For Each cn In ThisWorkbook.Connections
cn.Delete
Next cn
End Sub
Sub TenteAdaptarEsse()
Sheets("Sheet1").Select
For i = 1 To 11551 Step 231
With ActiveSheet.QueryTables.Add(Connection:= _
"URL;http://www.google.com/finance?q=" & Range("A" & i).Value & "&fstype=ii", Destination:=Range("B" & i))
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlAllTables
.WebFormatting = xlWebFormattingNone
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery = False
End With
Next i
Do
DoEvents
Loop
For Each cn In ThisWorkbook.Connections
MsgBox cn
Next cn
End Sub

Public Sub RemoverQueries()
  
Dim ws As Worksheet
Dim qt As QueryTable
For Each ws In ThisWorkbook.Worksheets
For Each qt In ws.QueryTables
qt.Delete
Next qt
Next ws
  
If ActiveWorkbook.Connections.Count > 0 Then
For i = 1 To ActiveWorkbook.Connections.Count
ActiveWorkbook.Connections.Item(1).Delete
Next i
Else
MsgBox ActiveWorkbook.Connections.Count
End If
End Sub
 
Postado : 28/03/2013 9:47 am
(@gustavo_ada)
Posts: 12
Active Member
Topic starter
 

Esse código resolveu meu problema!
só que ele não para a conexão, mas deleta ela, mas deixando os arquivos da ultima alteração...mas ai o jeito que eu fiz foi criar uma macro que cria uma nova conexão (assim ela atualiza) e deletar
posteriormente, com o codigo abaixo

    Conn.Close
End Sub

Vlw! e muito obrigado!!

 
Postado : 06/04/2013 7:47 am