none
Vinculos Excel RRS feed

  • Pergunta

  • Buenas,

    Preciso de uma macro que verifique todos os vinculos existentes na planilha.

    Depois de encontrato, a macro deverá trocar o mês do vinculo de 11 (por exemplo) para 12.

    Exemplo:

    "G:\2006\11\Estoque\planilha.xls

    VALEU

     

    segunda-feira, 11 de dezembro de 2006 15:07

Respostas

  • Oi Pavão,

    fazer esta tarefa pelo menu Editar é fácil.

    Por macro, entretanto, é um pouco difícil, pois não encontrei uma propriedade para editar o link, tem que ser direto na fórmula. Pode ser assim:

    Sub ChangeLinkSource()
    'Cortesia: Luiz Cláudio
    Dim Wkb As Excel.Workbook
    Dim arrayLinks As Variant

    Set Wkb = ActiveWorkbook

    arrayLinks = Wkb.LinkSources(xlExcelLinks)

    If Not IsEmpty(arrayLinks) Then
        For i = 1 To UBound(arrayLinks)
            ReplaceFormula CStr(arrayLinks(i)), "\11\", _
            "\12\", Wkb, Wkb.ActiveSheet
        Next i
    End If

    Set Wkb = Nothing

    End Sub

    Sub ReplaceFormula(strFormula As String, strFind As String, _
    strReplace As String, Wkb As Workbook, Wks As Worksheet)
    Dim rng As Range

    For Each rng In Wks.UsedRange.Cells
        If InStr(1, strFormula, strFormula, vbTextCompare) > 0 Then
            rng.Formula = Replace(rng.Formula, strFind, _
            strReplace, , , vbTextCompare)
        End If
    Next rng

    End Sub

    sexta-feira, 22 de dezembro de 2006 00:13
    Moderador
  • Boa tarde,

     

    Bom.. uma idéia seria usar a função INDIRECT, onde vc condiciona o vinculo desejado a uma célua onde vc informa o mês.

    Assim evita macros.

    Se bem que eu prefiro semrpe usar macros.. hehehhe

    Mas as funções as vezes quebram o galho.

     

    Ateh!

    sexta-feira, 22 de dezembro de 2006 20:25

Todas as Respostas

  • Oi Pavão,

    fazer esta tarefa pelo menu Editar é fácil.

    Por macro, entretanto, é um pouco difícil, pois não encontrei uma propriedade para editar o link, tem que ser direto na fórmula. Pode ser assim:

    Sub ChangeLinkSource()
    'Cortesia: Luiz Cláudio
    Dim Wkb As Excel.Workbook
    Dim arrayLinks As Variant

    Set Wkb = ActiveWorkbook

    arrayLinks = Wkb.LinkSources(xlExcelLinks)

    If Not IsEmpty(arrayLinks) Then
        For i = 1 To UBound(arrayLinks)
            ReplaceFormula CStr(arrayLinks(i)), "\11\", _
            "\12\", Wkb, Wkb.ActiveSheet
        Next i
    End If

    Set Wkb = Nothing

    End Sub

    Sub ReplaceFormula(strFormula As String, strFind As String, _
    strReplace As String, Wkb As Workbook, Wks As Worksheet)
    Dim rng As Range

    For Each rng In Wks.UsedRange.Cells
        If InStr(1, strFormula, strFormula, vbTextCompare) > 0 Then
            rng.Formula = Replace(rng.Formula, strFind, _
            strReplace, , , vbTextCompare)
        End If
    Next rng

    End Sub

    sexta-feira, 22 de dezembro de 2006 00:13
    Moderador
  • Boa tarde,

     

    Bom.. uma idéia seria usar a função INDIRECT, onde vc condiciona o vinculo desejado a uma célua onde vc informa o mês.

    Assim evita macros.

    Se bem que eu prefiro semrpe usar macros.. hehehhe

    Mas as funções as vezes quebram o galho.

     

    Ateh!

    sexta-feira, 22 de dezembro de 2006 20:25