Criação de Macros

Electro 99
Velha Guarda
Velha Guarda
Mensagens: 1084
Registado: 26 fev 2009, 18:21
Enviou: 5 vezes
Agradecimento recebido: 3 vezes

Re: Criação de Macros

Mensagem por Electro 99 »

Olá NokPT, tudo bem?

Diz-me uma coisa:

Na minha folha em excel com VB que estiveste a rectificar, colocaste lá um comandobuton. Como fizeste para que ele aparecesse na folha?

Abraço,

Electro 99


nokPT
Velha Guarda
Velha Guarda
Mensagens: 228
Registado: 26 set 2008, 22:45
Agradecimento recebido: 2 vezes

Re: Criação de Macros

Mensagem por nokPT »

Não fiz nada de especial, o meu excel é 2003, carregue na barra de icons com o botão do lado direito, activei "Caixa de ferramentas e controlo", apareceu uma nova barra com estes botões (entre outras coisas) depois é só arrastar o controlo que queres para onde queres.

Não te respondi à outra pergunta, porque não sei a resposta, normalmente não programa em Excel, prefiro fazer um programa em VB.NET.
Ricardo Timóteo
nokPT
Velha Guarda
Velha Guarda
Mensagens: 228
Registado: 26 set 2008, 22:45
Agradecimento recebido: 2 vezes

Re: Criação de Macros

Mensagem por nokPT »

Electro 99 Escreveu: Tenho uma outra dúvida:

Iaginemos que estou a criar código VB numa determinada folha de excel e em os inputs de uma determinada variável estão numa célula doutra folha do Excel.

Como facto? variavel = range(Folha1!B44), por exemplo?
Tal como já disse, não sei, mas lembrei-me de uma maneira de descobrir:

Gravas uma macro, há algures no Excel um botão para gravar macro, e nessa macho fazes os passos todos que necessitas, seleccionar uma coluna, escrever, seleccionar outra folha ou outro livro, escrever, etc... no fiz carregas em "Fim de gravação" e vês a macro que o Excel criou, tem lá tudo que fizeste.
Ricardo Timóteo
Electro 99
Velha Guarda
Velha Guarda
Mensagens: 1084
Registado: 26 fev 2009, 18:21
Enviou: 5 vezes
Agradecimento recebido: 3 vezes

Re: Criação de Macros

Mensagem por Electro 99 »

nokPT Escreveu:Não fiz nada de especial, o meu excel é 2003, carregue na barra de icons com o botão do lado direito, activei "Caixa de ferramentas e controlo", apareceu uma nova barra com estes botões (entre outras coisas) depois é só arrastar o controlo que queres para onde queres.

Não te respondi à outra pergunta, porque não sei a resposta, normalmente não programa em Excel, prefiro fazer um programa em VB.NET.
Já consegui :)

Obrigado.
Electro 99
Velha Guarda
Velha Guarda
Mensagens: 1084
Registado: 26 fev 2009, 18:21
Enviou: 5 vezes
Agradecimento recebido: 3 vezes

Re: Criação de Macros

Mensagem por Electro 99 »

nokPT Escreveu:(...) normalmente não programa em Excel, prefiro fazer um programa em VB.NET.
Qual é a diferente de programar no VB que vem no excel e no VB.NET? No excel dá para programar em VB.NET?

Quais as vantagens de um e de outro?

Abraço.
nokPT
Velha Guarda
Velha Guarda
Mensagens: 228
Registado: 26 set 2008, 22:45
Agradecimento recebido: 2 vezes

Re: Criação de Macros

Mensagem por nokPT »

VB.NET é só programação.

O VB do Excel é VBA (aplication) e é para dar mais funcionalidades ao excel.

A diferença entre programar VB.NET e VB do excel é como comparar uma máquina de calcular e o excel.

O VB.NET é muito mais poderoso (e fácil de usar), é usado para desenvolver aplicações, mas não é uma folha de cálculo, mas podes fazer uma folha de cálculo.

Estás a usar Excel, podes usar VB.NET, mas em vez de usares uma folha de cálculo e formatar e acrescentar fórmulas etc... podes fazer um programa em VB.NET que poderá fazer a mesma coisa mas de forma diferente. Apesar do trabalho inicial em Excel ser menor, no final e à medida que os dados que tens que trabalhar vão crescendo e multiplicando é preferível fazer uma aplicação.

Por exemplo, nós fazemos os orçamentos em excel, as propostas em word (ou excel), as encomendas em excel, o acompanhamento de obra em excel, etc... Funciona, mas chega a uma altura que começa a ser complicado manter todo o trabalho direitinho, encomendar, juntar à obra, contabilizar, controlar, verificar margem, etc... Fazes um orçamento, ter o cuidado de passado X tempo acompanhar, fazer estatísticas, etc...

Começas a ter muitos ficheiros, ou ficheiros muito grandes, com muita informação e informação interligada e o mais provável é que comeces a abandonar parte do procedimento (encomendas por email ou telefone, não contabilizar custos das obras, não acompanhar orçamentos etc...)

Neste caso, ou melhor, para este caso estou a fazer uma aplicação (nos tempos livres), onde faço os orçamentos, faço acompanhamento de propostas (automaticamente, envia um email a perguntar como está), estatística, faço encomenda, junta automaticamente o material à obra (sem chatices), etc...

É um projecto um bocadinho trabalhoso, porque quis meter o máximo possível e o tempo é pouco.

Outro exemplo, prende-se com os recibos dos funcionários, 1º usávamos excel (mas toda a gente mexia, mesmo sem querer e o resultado final não era o melhor), depois passei para access, eliminei 90% dos problemas, mas é difícil de fazer alterações então recentemente fiz um programa em VB.NET (Programa de gestão de salários, podes descarregar e experimentar se necessitares)
Ricardo Timóteo
Electro 99
Velha Guarda
Velha Guarda
Mensagens: 1084
Registado: 26 fev 2009, 18:21
Enviou: 5 vezes
Agradecimento recebido: 3 vezes

Re: Criação de Macros

Mensagem por Electro 99 »

nokPT Escreveu:VB.NET é só programação.

O VB do Excel é VBA (aplication) e é para dar mais funcionalidades ao excel.

A diferença entre programar VB.NET e VB do excel é como comparar uma máquina de calcular e o excel.

O VB.NET é muito mais poderoso (e fácil de usar), é usado para desenvolver aplicações, mas não é uma folha de cálculo, mas podes fazer uma folha de cálculo.

Estás a usar Excel, podes usar VB.NET, mas em vez de usares uma folha de cálculo e formatar e acrescentar fórmulas etc... podes fazer um programa em VB.NET que poderá fazer a mesma coisa mas de forma diferente. Apesar do trabalho inicial em Excel ser menor, no final e à medida que os dados que tens que trabalhar vão crescendo e multiplicando é preferível fazer uma aplicação.

Por exemplo, nós fazemos os orçamentos em excel, as propostas em word (ou excel), as encomendas em excel, o acompanhamento de obra em excel, etc... Funciona, mas chega a uma altura que começa a ser complicado manter todo o trabalho direitinho, encomendar, juntar à obra, contabilizar, controlar, verificar margem, etc... Fazes um orçamento, ter o cuidado de passado X tempo acompanhar, fazer estatísticas, etc...

Começas a ter muitos ficheiros, ou ficheiros muito grandes, com muita informação e informação interligada e o mais provável é que comeces a abandonar parte do procedimento (encomendas por email ou telefone, não contabilizar custos das obras, não acompanhar orçamentos etc...)

Neste caso, ou melhor, para este caso estou a fazer uma aplicação (nos tempos livres), onde faço os orçamentos, faço acompanhamento de propostas (automaticamente, envia um email a perguntar como está), estatística, faço encomenda, junta automaticamente o material à obra (sem chatices), etc...

É um projecto um bocadinho trabalhoso, porque quis meter o máximo possível e o tempo é pouco.

Outro exemplo, prende-se com os recibos dos funcionários, 1º usávamos excel (mas toda a gente mexia, mesmo sem querer e o resultado final não era o melhor), depois passei para access, eliminei 90% dos problemas, mas é difícil de fazer alterações então recentemente fiz um programa em VB.NET (Programa de gestão de salários, podes descarregar e experimentar se necessitares)
Para todas as funcionalidades de que falas, não seria melhor a tua empresa comprar um software de gestão, tipo PHC, ou SAGE?
nokPT
Velha Guarda
Velha Guarda
Mensagens: 228
Registado: 26 set 2008, 22:45
Agradecimento recebido: 2 vezes

Re: Criação de Macros

Mensagem por nokPT »

Nós usamos Next da Sage.

Estes softwares têm custos muito elevados, são pouco versáteis, foram desenvolvidos para empresas tipo Continente ou Jumbo ou ...,

Não foram desenvolvidos para o que necessitamos, nem são passíveis de ser adaptados, já fazem mal o que é standard imagina o que não é...
Ricardo Timóteo
Electro 99
Velha Guarda
Velha Guarda
Mensagens: 1084
Registado: 26 fev 2009, 18:21
Enviou: 5 vezes
Agradecimento recebido: 3 vezes

Re: Criação de Macros

Mensagem por Electro 99 »

nokPT Escreveu:Nós usamos Next da Sage.

Estes softwares têm custos muito elevados, são pouco versáteis, foram desenvolvidos para empresas tipo Continente ou Jumbo ou ...,

Não foram desenvolvidos para o que necessitamos, nem são passíveis de ser adaptados, já fazem mal o que é standard imagina o que não é...
É curioso, mas a minha opinião sobre os softwares de gestão é essa mesma... A do meu patrão não.
Electro 99
Velha Guarda
Velha Guarda
Mensagens: 1084
Registado: 26 fev 2009, 18:21
Enviou: 5 vezes
Agradecimento recebido: 3 vezes

Re: Criação de Macros

Mensagem por Electro 99 »

Onde posso descarregar o VB.net?

Eu tenho o VB 6.0, é a mesma coisa?
nokPT
Velha Guarda
Velha Guarda
Mensagens: 228
Registado: 26 set 2008, 22:45
Agradecimento recebido: 2 vezes

Re: Criação de Macros

Mensagem por nokPT »

À muito tempo havia o VB.6, depois apareceu: VB.NET 2003, VB.NET 2005, VB.NET 2008 e está para sair o VB.NET 2010.

Há várias versões, a que eu uso é a express que é grátis, tem algumas limitações, as principais serão:
* O Wizard não permite ligar a bases de dados noutro computador, o wizard só liga a bases de dados do nosso computador, mas podes ligar "à mão" à base de dados que quiseres
* Não tem a ferramenta de reports (cristal report ou reports mesmo), mas podes fazer à mão ou usar outras ferramentas que andam na net
* O instalador das nossas aplicações é um bocado limitado, mas podes usar outras ferramentas que andam na net (eu uso o INNO)
* Não dá para aplicações mobile entre outras

Mas é grátis, se quiseres versões mais completas, tens 2 ou 3 ou mai,s funciona muito bem e é o futuro.

Download
Ricardo Timóteo
Electro 99
Velha Guarda
Velha Guarda
Mensagens: 1084
Registado: 26 fev 2009, 18:21
Enviou: 5 vezes
Agradecimento recebido: 3 vezes

Re: Criação de Macros

Mensagem por Electro 99 »

nokPT Escreveu:À muito tempo havia o VB.6, depois apareceu: VB.NET 2003, VB.NET 2005, VB.NET 2008 e está para sair o VB.NET 2010.

Há várias versões, a que eu uso é a express que é grátis, tem algumas limitações, as principais serão:
* O Wizard não permite ligar a bases de dados noutro computador, o wizard só liga a bases de dados do nosso computador, mas podes ligar "à mão" à base de dados que quiseres
* Não tem a ferramenta de reports (cristal report ou reports mesmo), mas podes fazer à mão ou usar outras ferramentas que andam na net
* O instalador das nossas aplicações é um bocado limitado, mas podes usar outras ferramentas que andam na net (eu uso o INNO)
* Não dá para aplicações mobile entre outras

Mas é grátis, se quiseres versões mais completas, tens 2 ou 3 ou mai,s funciona muito bem e é o futuro.

Download
Aparecem 3 links para download, qual é o que eu escolho?
Sem título.bmp
(4.92 MiB) Transferido 20 vezes
nokPT
Velha Guarda
Velha Guarda
Mensagens: 228
Registado: 26 set 2008, 22:45
Agradecimento recebido: 2 vezes

Re: Criação de Macros

Mensagem por nokPT »

A MicroSoft está sempre a alterar a página, dantes até havia 5 ou mais links.

Se queres equivalente ao VB6 escolhes o Visual Basic 2008 Express, mas se quiseres completar em vez de Basic programar C, tens o C++ e o C# (o C# é mais fácil),

Dantes ainda tinha para o SQL Express e para outro programa de edição de páginas de internet (express também)
Ricardo Timóteo
Electro 99
Velha Guarda
Velha Guarda
Mensagens: 1084
Registado: 26 fev 2009, 18:21
Enviou: 5 vezes
Agradecimento recebido: 3 vezes

Re: Criação de Macros

Mensagem por Electro 99 »

Boas NokPt,

Estou tentar trabalhar no VB.NET, mas estou com muitas dificuldades em entender-me com aquilo.


Como faço para criar uma folha de cálculo? Não tens algum exemplo prático por onde me possa guiar?


Apesar de já ter programado em VB, não estou a conseguir programar aqui :(
nokPT
Velha Guarda
Velha Guarda
Mensagens: 228
Registado: 26 set 2008, 22:45
Agradecimento recebido: 2 vezes

Re: Criação de Macros

Mensagem por nokPT »

Este fórum não é propriamente o melhor local para colocar código fonte, porque não permite a formatação de forma a ler-se bem, mas de qualquer maneira aqui vai:

Friend Function ExportToExcel(ByVal TipoRelatório As String, Optional ByVal Ano As Integer = 0, Optional ByVal Mes As Integer = 0, Optional ByVal Dia As Integer = 0) As String
Dim objExcelApp As New Excel.Application()
Dim objExcelBook As Excel.Workbook
Dim objExcelSheet As Excel.Worksheet
Try
' Começa por fazer os cálculos para o relatório
CalculaValores()

' Altera o tipo/localização para Inglês. Existe incompatibilidade
' entre algumas versões de Excel vs Sistema Operativo
Dim oldCI As CultureInfo = CurrentThread.CurrentCulture
Dim filename As String = ""
CurrentThread.CurrentCulture = New CultureInfo("en-US")

If TipoRelatório = "Diário" Then
' Adiciona um workbook e activa a worksheet corrente
objExcelBook = objExcelApp.Workbooks.Add(MainPath & "Templates\RelatórioDiário.xlt")
objExcelSheet = CType(objExcelBook.Worksheets(1), Excel.Worksheet)
' Cabeçalho do relatório
objExcelSheet.Range("F6").Value = Format(Dia, "00") & "-" & Format(Mes, "00") & "-" & Ano.ToString

' Escreve os valores das horas
For row As Integer = 12 To 35
Dim rowHora As Integer
rowHora = row - 12
Dim Ligado As Integer = DadosHora(Mes, Dia, rowHora).Ligado
Dim funcionamento As Integer = DadosHora(Mes, Dia, rowHora).Funcionamento
Dim emissão As Single = DadosHora(Mes, Dia, rowHora).Emissão
Dim concentração As Single = DadosHora(Mes, Dia, rowHora).Concentração
objExcelSheet.Range("C" & row).Value = DadosHora(Mes, Dia, rowHora).Ligado.ToString
objExcelSheet.Range("D" & row).Value = DadosHora(Mes, Dia, rowHora).Funcionamento.ToString
objExcelSheet.Range("E" & row).Value = FormatNumber(DadosHora(Mes, Dia, rowHora).Emissão, 2).ToString
objExcelSheet.Range("F" & row).Value = FormatNumber(DadosHora(Mes, Dia, rowHora).Concentração, 2).ToString
Next
filename = MainPath & "Relatórios\RD-" & Ano.ToString & "-" & Format(Mes, "00") & "-" & Format(Dia, "00") & ".xls"
ElseIf TipoRelatório = "Mensal" Then
' Adiciona um workbook e activa a worksheet corrente
objExcelBook = objExcelApp.Workbooks.Add(MainPath & "Templates\RelatórioMensal.xlt")
objExcelSheet = CType(objExcelBook.Worksheets(1), Excel.Worksheet)
' Cabeçalho do relatório
objExcelSheet.Range("F6").Value = Format(Mes, "00") & "-" & Ano.ToString
' Escreve os valores dos dias
For row As Integer = 12 To 42
Dim rowDia As Integer
rowDia = row - 11
Dim Ligado As Integer = DadosDia(Mes, rowDia).Ligado
Dim funcionamento As Integer = DadosDia(Mes, rowDia).Funcionamento
Dim emissão As Single = DadosDia(Mes, rowDia).Emissão
Dim concentração As Single = DadosDia(Mes, rowDia).Concentração

Dim horas As Integer = Int(DadosDia(Mes, rowDia).Ligado / 60)
Dim minutos As Integer = CInt(DadosDia(Mes, rowDia).Ligado - horas * 60)
objExcelSheet.Range("C" & row).Value = horas & ":" & Format(minutos, "00")
horas = Int(DadosDia(Mes, rowDia).Funcionamento / 60)
minutos = CInt(DadosDia(Mes, rowDia).Funcionamento - horas * 60)
objExcelSheet.Range("D" & row).Value = horas & ":" & Format(minutos, "00")
objExcelSheet.Range("E" & row).Value = FormatNumber(DadosDia(Mes, rowDia).Emissão, 2).ToString
objExcelSheet.Range("F" & row).Value = FormatNumber(DadosDia(Mes, rowDia).Concentração, 2).ToString
Next
filename = MainPath & "Relatórios\RM-" & Ano.ToString & "-" & Format(Mes, "00") & ".xls"
End If

' Ajusta o largura das colunas automáticamente
'objExcelSheet.Columns.AutoFit()

If filename <> "" Then
objExcelApp.DisplayAlerts = False
objExcelBook.SaveAs(filename)
objExcelBook.Close()
objExcelApp.Quit()
End If

' Altera a tipo/localização para actual
CurrentThread.CurrentCulture = oldCI
ExportToExcel = filename
Catch ex As Exception
GravaErro("Erro #1 -> mdlRelatórios -> " & ex.Message)
ExportToExcel = ""
Finally
objExcelSheet = Nothing
objExcelBook = Nothing
objExcelApp = Nothing
' O GC(garbage collector) recolhe a memória não usada pelo sistema.
' O método Collect() força a recolha e a opção WaitForPendingFinalizers
' espera até estar completo. Desta forma o EXCEL.EXE não fica no
' task manager(gestor tarefas) ocupando memória desnecessáriamente
GC.Collect()
GC.WaitForPendingFinalizers()
End Try
End Function

Nesta função crio um ficheiro excel a partir de um template existente e depois preencho as células com os valores, é mais fácil assim até porque o template em causa tinha uma série de imagens (logo tipo da empresa, da qualidade, das certificações) e já era um modelo interno.
Ricardo Timóteo
Responder

Voltar para “Discussão Informática”