Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

diogoarsousa

O VB.NET não aceita várias funções que o VB6 aceitava ao trabalhar no Excel

Recommended Posts

diogoarsousa

Olá

E tenho um programa em VB6 que abre uma folha de cálculo Excel 2003 e o programa utiliza expressões funções do Excel do tipo AVERAGE ou MIN e funciona bem.

Estou agora a desenvolver o mesmo programa em Visual Basic.NET 2003 e se não utilizar MÉDIA ou MÍNIMO, não reconhece as funções.

Por outro lado as fórmulas, que funcionavam com o VB6, agora dão erro:

Folha2.Range("C1").FormulaR1C1 = "=RC[-2]/20"

O que é que eu posso fazer?

Obrigado

Diogo

Share this post


Link to post
Share on other sites
jpaulino
O VB.NET não aceita várias funções que o VB6 aceitava ao trabalhar no Excel

Aceitar aceita, tu é que não sabes ;)

Mostra lá que funções e mostra lá mais código.

Share this post


Link to post
Share on other sites
diogoarsousa

Por exemplo, no código do VB6 tinha e tenho o Office em português:

Folha1.Range("E" & CStr(ultimo + 2)).value = "=AVERAGE(" & "E" & CStr(primeiro + 1) & ":" & "E" & CStr(ultimo + 1) & ")"

O VB.NEt exige-me que eu escreva MÉDIA em vez de AVERAGE.

E também todos os «FormulaR1C1» dão erro:

Folha2.Range("C1").FormulaR1C1 = "=RC[-2]/20"

Obrigado

Diogo

Share this post


Link to post
Share on other sites
AMateus

Não sei se é o caso, mas acho que o nome das funções na versão inglesa e na versão portuguesa são diferentes.

Por algum motivo que me escapa, na localização do software para português traduziram também as funções. Pode ser essa (deve ser com certeza) a situação no caso das funções. SE em vez de IF, SOMA em vez de SUM, por aí!

Claro que prefiro não fazer comentários a esta hmmm decisão de estratégia de localização! Normalmente não gosto de insultar ninguém!

AMateus


R. Tape Loading Error

Share this post


Link to post
Share on other sites
ribeiro55

Eu até entendo a estratégia, e nao é má.

Parece um pequeno preço a pagar para que se tenham muito mais utilizadores contentes do que se teria da outra forma.

A relação da Framework com o Office está muito mais "forte" do que antes, permitindo uma interoperabilidade muito elevada, o que vai fazer, de certeza, com que se tenha de respeitar o "locale".

Com o VB6 devia passar por um intermediário que ia ao cerne da questao, ou algo assim.

Estou a especular à força toda 🤔


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Share this post


Link to post
Share on other sites
jpaulino

Eu discordo totalmente das funções no Office em PT estarem em Português. Os comandos de programação (Dim, Private, For Each, etc) também não estão traduzidos. Tanto não concordo tanto que, como faço parte do programa do Office como tester, já coloquei essa questão e sugeri pelo menos a possibilidade de alterar num menu/opção qualquer.

@diogoarsousa ,

Isso que mostraste não dá para nada. Mostra mais código: imports, que referências usaste, o que é o "Folha2" por exemplo, tens intelissense para te aparecer "FormulaR1C1", etc, etc.

Assim, é dificil ajudar-te :confused:

Share this post


Link to post
Share on other sites
diogoarsousa

Add Reference

COM

Microsoft Excel 11.0 Object Library

No Form apareceu-me:

Imports Excel = Microsoft.Office.Interop.Excel

O que é intelissense para aparecer "FormulaR1C1"?

Pequenas partes do programa:

       Dim objApp As New Excel.Application()

        Dim Folha1 As Object

        Dim Folha2 As Object

        Dim Grafico As Object


        objApp.Workbooks.Add()


        Folha1 = objApp.ActiveWorkbook.Worksheets.Add
        Folha1.Name = "Quadro"

        Folha2 = objApp.ActiveWorkbook.Worksheets.Add
        Folha2.Name = "Quadro Auxiliar"

        Grafico = objApp.ActiveWorkbook.Charts.Add
        Grafico.Name = "Gráfico"

        objApp.Visible = True

        Folha2.Activate()

Tudo o que meta «Formula» dá erro

Folha2.Range("C1").FormulaR1C1 = "=RC[-2]/20"

Obrigado

Diogo

Share this post


Link to post
Share on other sites
AMateus

Na tua lógica então todas as linguagens deveriam ser traduzidas? Além do IDE, traduzia-se as funções, operadores, comandos da linguagem? :cheesygrin: Por acaso era interessante ver o c++ traduzido, ou o .net :confused:

É totalmente absurdo, mas isso é a minha opinião claro, e respeito a tua :cheesygrin:

AMateus

Eu até entendo a estratégia, e nao é má.

Parece um pequeno preço a pagar para que se tenham muito mais utilizadores contentes do que se teria da outra forma.

A relação da Framework com o Office está muito mais "forte" do que antes, permitindo uma interoperabilidade muito elevada, o que vai fazer, de certeza, com que se tenha de respeitar o "locale".

Com o VB6 devia passar por um intermediário que ia ao cerne da questao, ou algo assim.

Estou a especular à força toda 🤔


R. Tape Loading Error

Share this post


Link to post
Share on other sites
ribeiro55

Eu não estou a defender a estratégia.

Também me mete nojo escrever "SE".

Eu disse que entendo a estratégia.

Ao traduzir as funções do excel (que é a única coisa que está aqui em causa. dizer "todas as linguagens" é estar a meter-me palavras na boca... ou na ponta dos dedos), a Microsoft está a agradar à fatia dos utilizadores que não são programadores, que deve ser, arriscaria dizer uma percentagem superior a 70%.

Se fizeres a conta em euros/satisfação, vais ver que entendes a estratégia também. :confused:


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.