Estou escrevendo um código que abre uma planilha em um caminho na rede de acordo com uma data gravada em uma célula de uma sheet. A célula recebe o valor da formula =hoje() daí desencadeia todo código
Com base no ano, mês e dia o código varre o caminho buscando a pasta do ano e mês referente depois ele concatena uma string com o nome inicial do arquivo + o dia + mês e ano. Até aí tudo bem, deixei variável o mês e ano e ele localiza a pasta correta, o problema é o dia, dentro da pasta tem várias planilhas com a seguinte nomenclatura de estrutura: “modelo base ativos “dia(dd).mes(mm).ano(aaaa), logo nem sempre terá a planilha do dia que consta na celula que recebe a formula hoje(), então pensei o seguinte:
Criar uma sintaxe de erro no inicio do código do tipo:
Sub teste()
On error goto “nome”
Exit sub
“nome:”
1.Quando não localiza o arquivo aparece a mensagem que o arquivo não existe ou foi renomeado e excluído, essa mensagem obriga o usuário a clicar em ok, preciso automatizar o código para que ele aperte esse botão automaticamente senão trava as próximas ações
2.Criar um Loop que pegue a data gravada na celula some + 1 e excute novamente, se der erro (repete a ação 1 e 2) e segue a sequencia subtraindo a data por -1, se encontrar o arquivo ele abre se der erro ele repete o processo só que ao invés de subtrair 1 soma 1 a data. A ideia é seguir a logica alternada se erro subtrai o sequencial – 2 se der erro some o sequencial +2 e assim sucessivamente até subtrair 10 e somar 10, se ainda sim ele não encontrar aí deve aparecer a msgbox: “Atualização não realizada: planilha de ativos referente ao período não localizada na rede, contate administrador”
Segue abaixo o código:
Sub BBMP()
Dim Caminho As String
Dim Data As Date
Dim Ano As Integer
Dim Nome_mes As String
Dim mes As String
Dim Espaco As String
Dim Nome_arquivo As String
Dim Mes_numero As Integer
Dim MesAjustado As String
Dim DiaAjustado As String
Workbooks.Open (Caminho & Ano & mes & Nome_arquivo), UpdateLinks:=0
'Se não achar o arquivo eliminar o aviso e criar um loop para: dia -1, dia +1, dia -2, dia +2...dia -n, dia +n
'Se ainda sim não achar msgbox: "Atualização não realizada: planilha de teste referente ao período não localizada no drive, contate administrador"
Pergunta
silvaarthur89
Estou escrevendo um código que abre uma planilha em um caminho na rede de acordo com uma data gravada em uma célula de uma sheet. A célula recebe o valor da formula =hoje() daí desencadeia todo código
Com base no ano, mês e dia o código varre o caminho buscando a pasta do ano e mês referente depois ele concatena uma string com o nome inicial do arquivo + o dia + mês e ano. Até aí tudo bem, deixei variável o mês e ano e ele localiza a pasta correta, o problema é o dia, dentro da pasta tem várias planilhas com a seguinte nomenclatura de estrutura: “modelo base ativos “dia(dd).mes(mm).ano(aaaa), logo nem sempre terá a planilha do dia que consta na celula que recebe a formula hoje(), então pensei o seguinte:
Criar uma sintaxe de erro no inicio do código do tipo:
Sub teste()
On error goto “nome”
Exit sub
“nome:”
1. Quando não localiza o arquivo aparece a mensagem que o arquivo não existe ou foi renomeado e excluído, essa mensagem obriga o usuário a clicar em ok, preciso automatizar o código para que ele aperte esse botão automaticamente senão trava as próximas ações
2. Criar um Loop que pegue a data gravada na celula some + 1 e excute novamente, se der erro (repete a ação 1 e 2) e segue a sequencia subtraindo a data por -1, se encontrar o arquivo ele abre se der erro ele repete o processo só que ao invés de subtrair 1 soma 1 a data. A ideia é seguir a logica alternada se erro subtrai o sequencial – 2 se der erro some o sequencial +2 e assim sucessivamente até subtrair 10 e somar 10, se ainda sim ele não encontrar aí deve aparecer a msgbox: “Atualização não realizada: planilha de ativos referente ao período não localizada na rede, contate administrador”
Segue abaixo o código:
Sub BBMP()
Dim Caminho As String
Dim Data As Date
Dim Ano As Integer
Dim Nome_mes As String
Dim mes As String
Dim Espaco As String
Dim Nome_arquivo As String
Dim Mes_numero As Integer
Dim MesAjustado As String
Dim DiaAjustado As String
Sheets("Painel").Activate
linha = 1
Range("B1:D1").ClearContents
Cells(linha, 2).FormulaR1C1 = "=TODAY()"
Cells(linha, 3).FormulaR1C1 = "=MONTH(RC[-1])"
Cells(linha, 4).FormulaR1C1 = "=IF(RC[-1]<10,""0""&RC[-1],RC[-1])"
Cells(linha, 5).FormulaR1C1 = "=DAY(RC[-3])"
Cells(linha, 6).FormulaR1C1 = "=IF(RC[-1]<10,""0""&RC[-1],RC[-1])"
Data = Cells(linha, 2).Value
Ano = DatePart("yyyy", Data)
Mes_numero = Cells(linha, 4).Value
MesAjustado = Cells(linha, 4).Value
Nome_mes = MonthName(Month(Data))
Espaco = Space(1)
mes = "\" & Mes_numero & Espaco & "-" & Espaco & Nome_mes
DiaAjustado = Cells(linha, 6).Value
Caminho = "C:\teste\3 - testando\3 - Planilha teste\"
Nome_arquivo = "\Modelo Base teste" & Espaco & DiaAjustado & "." & MesAjustado & "." & Ano & ".xlsb"
Workbooks.Open (Caminho & Ano & mes & Nome_arquivo), UpdateLinks:=0
'Se não achar o arquivo eliminar o aviso e criar um loop para: dia -1, dia +1, dia -2, dia +2...dia -n, dia +n
'Se ainda sim não achar msgbox: "Atualização não realizada: planilha de teste referente ao período não localizada no drive, contate administrador"
End Sub
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.