×
Ir ao conteúdo
  • Cadastre-se

Bruno_ABS

Membro Júnior
  • Posts

    13
  • Cadastrado em

  • Última visita

  • Qualificações

    0%

Reputação

2

Informações gerais

  • Cidade e Estado
    Rio de Janeiro/RJ
  • Sexo
    Masculino
  1. Aparentemente há algum tipo de limitação quanto a extensão do caminho de diretório ... Não sei se é exatamente isso, mas ao reestruturar as pastas para que o caminho ficasse mais curto, funcionou rsrsrs Inclusive depois vou dar uma aprofundada nisso, pois vale tanto pra VB quanto .NET Segue de onde tirei esse insight, na documentação da Microsoft: https://docs.microsoft.com/pt-br/dotnet/api/system.io.pathtoolongexception?view=net-6.0
  2. Olá @Basole ! Vou dar um up pra gente tentar entender qual pode ser o gap ! Tanto na Rotina que estávamos analisando quanto na abaixo, ela só funciona quando o arquivo se encontra na área de trabalho. Quando eu aloco o arquivo em um caminho com muitas pastas (ex C:\Caminho\Caminho\Caminho etc) ela trava, parando na instância onde ela deve salvar (ThisWorkbook.Path). Eu utilizei uma outra rotina que se encontra no arquivo que te passei, mas dei um tapa nela. Essa Sub funciona também de boas quando o arquivo está na Área de Trabalho.
  3. @Basole Curioso que numa das imagens acima eu havia definido o nome da FileName como "Teste" (a não ser que eu precisasse definir essa string depois das declarações. Curioso ... Outra curiosidade: quando abri o arquivo que me enviou na área de trabalho, a rotina funcionou; quando coloquei ele nas subpastas de onde guardaria ela, falou rs. O que é muito curioso já que o diretório raiz foi uma variável definida como ThisWorkbook.Path. Além de ter desconsiderado os shapes e declarado a variável FileName, fez mais alguma coisa ?! Olhei aqui por alto e me parece isso mesmo.
  4. @Basole Você teria uma solução melhor pra realizar esse procedimento ?! A ideia é cadastrar tudo nessa planilha e exportar esses dados cadastrados para uma nova pasta de trabalho. Haveria histórico na planilha de cadastro, então toda vez que eu cadastrar algo novo é só exportar pra que essa base de dados seja atualizada conforme novos inputs. Curioso é que eu havia feito uma outra planilha de cadastro mais simples e tinha funcionado perfeitamente, com renomeação da planilha e pasta de trabalho
  5. @Basole Peço desculpas, provavelmente te passei o arquivo faltando linha porquê eu estava tentando outras coisas e esqueci de retornar rsrs Mas pra mim tá dando erro ainda, onde na depuração a rotina pára aqui:
  6. @Basole Opa, pronto ! Cadastro de Eventos.rar Aproveita e dá uma olhada pra saber se fiz muita besteira hahahah
  7. @Basole Pior que fiz isso e continuou o erro ... Como eu faço pra enviar por aqui arquivo ? Pelo que parece não aceita xlsm, apenas xlsx. Tem que ser em xlsx e aí você salva como xlsm ?! Ou há outra forma ?
  8. Oi @Basole, obrigado por mais uma vez vir em meu socorro ! Vou mostrar aqui como estou querendo desenhar esse formulário e você se possível, me ajuda a melhorar e critique o que está errado please ! Basicamente, o formulário é poder cadastrar dados, além de poder edita-los e exportar a planilha numa pasta de trabalho nova (a ideia é ninguém digitar na planilha e imputar os dados pra que não tenham erros de ortografia etc, pra que eu possa trabalhar como importação no Power Query. Esse Useform abre sem exibir a planilha, porém se a pessoa quiser ver o que está sendo cadastrado ela pode ativa-la pra visualizar (sei que seria muito melhor ter dentro desse Useform um objeto que mostrasse a lista com as colunas, mas não sei fazer e não cheguei a tentar). Queria também que o ID pudesse ser acrescido automaticamente e sucessivamente (1,2,3 etc), mas como não entendi bem como fazer, coloquei de forma pra que a pessoa escrevesse e cadastrasse, porquê pelo menos assim eu consegui fazer. Na ComboBox da Aplicação, ele está pegando uma range da própria planilha, pois se houver algo novo a ser acrescido e a pessoa não souber realizar um Additem, pelo menos dessa forma ela consegue encaixar escrevendo na tabela que serve de range. Desativei o "X" da Useform pra pessoa ser obrigada a utiliza-la e apertar em "Sair" pra salvar e fechar. Não consegui pensar em nada melhor (nesse caso, preciso desativar as macros pra entrar e conseguir utilizar o VBE, pois desativando esse "X" não consigo dar Alt+F11 pra acessar o VBE. A ideia do "Exportar" é: Depois de cadastrar os dados na "Plan1" , o "Exportar" copiaria essa "Plan1", abriria uma nova Workbook ("Pasta1"), colaria os dados nessa nova Workbook, renomearia o nome da Planilha e da própria Pasta de Trabalho e depois salvaria esse arquivo. A pasta no caso não é comum a todos (não está compartilhada nem nada). Mas o desejo era de: se eu passasse esse formulário para alguém e ele exportar, vai conseguir realizar esse processo (em negrito) normalmente. O problema que encontro é que o script que uso parece ser limitado à origem do meu PC (e que se eu passar isso pra alguém, vai dar erro óbvio): Eu estava na variável "RootDir" inserindo o caminho todo do arquivo ("C:\caminho\caminho\etc\"), tentei colocar a variável como "ThisWorkBook.Path" (em azul) mas não serviu ou fiz algo errado. E quando eu inseri o script pra desativar a visibilidade do Excel e deixar somente o Formulário, comecei a receber erro a partir do grifado em vermelho. O script é esse: Espero que tenha conseguido melhorar o cenário pra ti ! Cordialmente,
  9. Boa tarde pessoal ! Estou precisando de um help: Criei um formulário bem simples de cadastro onde eu consigo, ao cadastrar os dados, apertar num botão "Exportar" , onde a macro copia a planilha contendo os dados cadastrados, salva numa outra pasta de trabalho, renomeia o nome do arquivo e também da planilha. Porém há um limitador, pois ele precisa ir na origem do arquivo pra realizar esse processo. E isso é um problema, porquê cada vez que alguém pegar esse formulário, precisaria entrar no Editor pra colocar o caminho da pasta de trabalho de seu próprio PC. Há alguma maneira de contornar isso ? Eu criei 2 Subs nesse processo, onde: Sub SalvarNovaPlanilha() Dim NovaPastadeTrabalho As Workbook Set NovaPastadeTrabalho = Workbooks.Add(xlWBATWorksheet) With NovaPastadeTrabalho ThisWorkbook.ActiveSheet.Copy After:=.Worksheets(Worksheets.Count) 'copio a planilha atual da pasta de trabalho .Worksheets(1).Delete 'deleto a primeira planilha da nova pasta de trabalho .SaveAs ThisWorkbook.Path & "\Nome_da_Planilha.xlsx" 'salvo o novo arquivo para a pasta de trabalho criada .Close False End With End Sub Sub Exportar() Dim RootDir As String Dim FileName As String Sheets("Plan1").Select Sheets("Plan1").Copy ActiveSheet.Shapes.Range(Array("Round Diagonal Corner Rectangle 2")).Select ActiveSheet.Shapes.Range(Array("Round Diagonal Corner Rectangle 2", _ "Round Diagonal Corner Rectangle 1")).Select Selection.Delete Sheets("Plan1").Select Sheets("Plan1").Name = "Teste" RootDir = "P:\Caminho\Caminho\" RootDir = Replace(RootDir, "@1", Application.UserName) FileName = "Novo Teste" ActiveWorkbook.SaveAs RootDir & FileName & ".xlsx" End Sub Há uma maneira de não precisar especificar o Diretório de onde o arquivo se encontra ou não tem jeito ? Abraço a todos, desde já agradecendo !
  10. Olá a todos mais uma vez ! Possuo um dash com todas as tabelas dinâmicas em modelo de dados, relacionadas entre dimensões e fatos, com ETL realizada no Power Query, tudo conforme o figurino rs. Porém, no momento em que relaciono gráficos dinâmicos com as segmentações, me deparo com o seguinte evento: 1. No exemplo abaixo, filtrei 3 segmentações. O correto seria que a segmentação de "Mês" apenas me exibisse o Mês de Novembro, já que só há dados referente a este item, porém os meses sem dados aparecem abaixo (o que é normal, pois é uma das características "preset" - Mostrar itens sem dados por último). 2. O problema é que eu habilitei (nas configurações de Segmentação de Dados) a seguinte opção: Dessa forma, o comportamento da Segmentação seria a de omitir os itens sem dados, e não mostrá-los por último. Mesmo quando eu retiro as tags das 2 últimas opções e mantenho a primeira, este evento ocorre. Tenho alguns insights acerca disso: - Como o dash possui 2 páginas e as informações vem das mesmas tabelas dinâmicas, poderia estar ocorrendo problema de cardinalidade ? Pensei em duplicar as Tabelas Dinâmicas e relacionar as segmentações separadamente, mas sinceramente me parece uma solução de contorno muito grosseira ... - Também há a questão das próprias segmentações, que vem de uma mesma base de dados (onde eu sempre escolho os itens das tabelas dimensão, onde creio ser a melhor prática). Será que possuir 2 segmentações de dados vindas de uma mesma tabela dimensão pode estar dando esse problema ? Qualquer tipo de auxílio será de grande valor ! Obrigado desde já !
  11. @Basole Ih é verdade amigo, expliquei aqui mesmo a descrição da lógica mas inseri uma string no lugar de range rs. Sorry! O seguinte erro está aparecendo: Será que isso está acontecendo porquê a string "Edicao" é igual ao texto contido na ComboBox, mas não referencia um endereço ? Apenas conjecturando pra tentar entender mesmo, pois como pode ver, sou muito raso em VBA rs. Obrigado desde já pela paciência Edit.: Encontrei a falta de atenção ! Estava chamando "Edicao" e não "rng" nos endereçamentos ¬¬" Muito obrigado meu amigo, você foi show ! PS.: você me indicaria cursos ou materiais bacanas pra eu poder adentrar mais em VBA ?
  12. @Basole Muito obrigado por sua resposta tão rápida ! E me desculpe se por acaso demorei pra passar feedback ! Quando insiro o script ele me retorna "Erro de compilação: O objeto é obrigatório" - sublinhando o 'rng'. Pelo que entendi na rotina: Declaro "rng" (que é o intervalo) como string, assim como a string "Edicao" (que será o texto contido na ComboBox - que já é a lista do que eu já cadastrei - expressa por um Additem de tudo o que estiver na Coluna A, limitando a lista para apenas células preenchidas) : Depois, pelo código, setamos "rng" como um intervalo e se houver algo em "Edicao" então: Substituo o próprio texto contido "ComboBox_Chamado_Old" (que está na Coluna A) para o contido em TextBox_Chamado_New; Substituo o que estiver na Coluna B pelo que estiver contido em ComboBox_Técnico_New; Substituo a data na Coluna C (para inserir a data mais recente, que é da atualização frente ao cadastro). Segue abaixo a ilustração dos objetos, pra você entender analisar melhor onde eu errei : Aguardo ansioso pelo seu retorno rsrsrs Cordialmente
  13. Olá a todos! Gostaria de pedir uma ajuda a vocês com a seguinte questão: 1. Montei um formulário pra que seja inserido 3 informações ("Nº do Chamado", "Técnico" e "Data Cadastro"), pra que o responsável (que não sou eu) possa me enviar esse arquivo com tudo formatado sem espaços ou caracteres errados (assim não preciso corrigir sempre que pegar essa lista na ETL). O objetivo foi alcançado: Porém, me veio à cabeça que quem quer que esteja preenchendo pode acabar errando tanto o nome do técnico quanto o número do chamado e precisar editar os dados, então criei um outro formulário pra abrir ao apertar em "Editar": Quando eu chamo o Nº do Chamado (que será uma chave estrangeira) a TextBox de baixo já é preenchida automaticamente e assim o responsável que realizar a atualização dos dados vai ou mudar ou manter número do chamado e nome do técnico, dependendo do possível erro dele. E aí que está pegando pra mim: Quero poder , ao apertar o botão "Atualizar", trocar as informações contidas à esquerda pelos dados que vão ser atualizados na direita, mas não consegui pensar numa forma de fazer isso, pois precisaria que as células onde elas estão inseridas fossem trocadas. As imagens abaixo representam o que eu gostaria que resultasse com o botão "Atualizar': *Coloquei a Data diferente para demonstrar que caso a atualização fosse num dia diferente, ele sempre daria o dia corrente, pra que o responsável sempre saiba qual a última data na qual ele realizou qualquer procedimento - seja de cadastro ou atualização de cadastro. Seguem abaixo algumas características que já estão embutidas no formulário: 1. Se um dos campos de cadastro ou os 2 estiverem vazios: 2. Se tentarem inserir letras no campo de chamado (que só possui números): 3. Se tentarem inserir o mesmo número de chamado: Não sei se é bobo frisar, mas se não houverem dados cadastrados, não haverá o que se ser editado rs (estou deixando a lista sem dados inseridos). Se estiver faltando alguma informação que possa auxiliar me avisem ! Obrigado desde já por qualquer iluminação que puderem oferecer ! Cordialmente,

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Curso de Hacker Ético

LANÇAMENTO!

CLIQUE AQUI E CONFIRA!

* Este curso não é ministrado pela equipe do Clube do Hardware.