Criação de Macros
-
- Velha Guarda
- Mensagens: 1085
- Registado: 26 fev 2009, 18:21
- Has thanked: 5 times
- Been thanked: 3 times
Re: Criação de Macros
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
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
Re: Criação de Macros
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.
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
Re: Criação de Macros
Tal como já disse, não sei, mas lembrei-me de uma maneira de descobrir: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?
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
-
- Velha Guarda
- Mensagens: 1085
- Registado: 26 fev 2009, 18:21
- Has thanked: 5 times
- Been thanked: 3 times
Re: Criação de Macros
Já conseguinokPT 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.

Obrigado.
-
- Velha Guarda
- Mensagens: 1085
- Registado: 26 fev 2009, 18:21
- Has thanked: 5 times
- Been thanked: 3 times
Re: Criação de Macros
Qual é a diferente de programar no VB que vem no excel e no VB.NET? No excel dá para programar em VB.NET?nokPT Escreveu:(...) normalmente não programa em Excel, prefiro fazer um programa em VB.NET.
Quais as vantagens de um e de outro?
Abraço.
Re: Criação de Macros
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)
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
-
- Velha Guarda
- Mensagens: 1085
- Registado: 26 fev 2009, 18:21
- Has thanked: 5 times
- Been thanked: 3 times
Re: Criação de Macros
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 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)
Re: Criação de Macros
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 é...
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
-
- Velha Guarda
- Mensagens: 1085
- Registado: 26 fev 2009, 18:21
- Has thanked: 5 times
- Been thanked: 3 times
Re: Criação de Macros
É curioso, mas a minha opinião sobre os softwares de gestão é essa mesma... A do meu patrão não.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 é...
-
- Velha Guarda
- Mensagens: 1085
- Registado: 26 fev 2009, 18:21
- Has thanked: 5 times
- Been thanked: 3 times
Re: Criação de Macros
À 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
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
-
- Velha Guarda
- Mensagens: 1085
- Registado: 26 fev 2009, 18:21
- Has thanked: 5 times
- Been thanked: 3 times
Re: Criação de Macros
Aparecem 3 links para download, qual é o que eu escolho?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
Re: Criação de Macros
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)
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
-
- Velha Guarda
- Mensagens: 1085
- Registado: 26 fev 2009, 18:21
- Has thanked: 5 times
- Been thanked: 3 times
Re: Criação de Macros
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
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

Re: Criação de Macros
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.
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