Jump to content
Fabio92

excel e visual basic 2010

Recommended Posts

Fabio92

boas...

sou novo em programação esto no curso a 1 ano e meio e actualmente esto a desenvolver um projecto para facturação...

o meu problema é ke kuando tento abrir o ficheiro excel e escrever nele o programa escreve e abre o ficheiro que eu quero abrir e um livro em branco...

alguem sabe como resolver este problema??

Share this post


Link to post
Share on other sites
ribeiro55

Vais ter de evitar os "k" e começar a utilizar vírgulas e outras pontuações.

Não consigo, sinceramente, entender com clareza o teu problema.


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
Fabio92

o meu problema é que o programa me abre um ficheiro em branco do excel (livro1.xls) em vez de me abrir so o ficheiro com os dados guardados(teste.xls).

eu so quero que ele abra o teste.xls e nao os 2 ficheiros.

Share this post


Link to post
Share on other sites
ribeiro55

De que forma estás a abrir/ler o(s) ficheiro(s)?


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
Fabio92

Imports System.Net.Mime.MediaTypeNames
Imports Microsoft.Office.Interop

Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim strFilePath As String
        strFilePath = "C:\Documents and Settings\SIM 27\Ambiente de trabalho\abrir ficheiro excel em vb\teste"
        Dim excSheet As Object
        Dim oExcelApp As New Excel.Application()
        Dim oWorkbook As Excel.Workbook = oExcelApp.Workbooks.Add

        oExcelApp.Visible = True

     

        Try

            oWorkbook = oExcelApp.Workbooks.Open(strFilePath, False)

        Catch ex As Exception

            MsgBox("Exception:  Model import, could not open model Design Table file: " & strFilePath)

            Return

        End Try


        excSheet = oExcelApp.ActiveWorkbook.ActiveSheet




        With excSheet
            .Cells(2, 1).Value = "A"
            .Cells(2, 2).Value = "B"
            .Cells(2, 3).Value = "C"
            .Cells(2, 4).Value = "D"

          
            .saveas(oExcelApp)

        End With


        Me.Close()

    End Sub
End Class

este é o meu codigo esto a fazer por partes este codigo abre o ficheiro e escreve nas celulas indicadas mas tem o problema ke ja referi...

Share this post


Link to post
Share on other sites
ribeiro55

Não estou familiarizado com estas classes, mas de repente, experimenta gravar não a active sheet, mas o workbook.

Ou seja, retira o .saveas do bloco With e usa o método saveas da classe Workbook


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
Fabio92

continua a abrir os 2 ficheiros na mesma em vez de 1...

nao sei como resolver este problema...

este codigo se alguem quiser testar so tem um botao na form e ao clicar nesse botao ele tem de abrir o ficheiro excel que ja esta criado e escrever na segunda linha A B C D nas colunas 1 2 3 e 4 respectivamente...

Share this post


Link to post
Share on other sites
Caça

Termina todos os processos do excel activos e faz como o ribeiro55 disse.

EDIT: E troca  esta linha

Dim oWorkbook As Excel.Workbook = oExcelApp.Workbooks.Add

por esta

Dim oWorkbook As Excel.Workbook


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
Fabio92

assim ja funciona bem e abre so 1 ficheiro...

obrigado...

mais uma coisa ele abre o ficheiro com a informação que eu quero mas depois de o fechar nao fica gravado...

alguem sabe o que pode ser???

Share this post


Link to post
Share on other sites
Caça

No final do código, coloca isto

oWorkbook.Save()


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
Fabio92

obrigado...

ja esta a funcionar bem agora tenho de aperfeiçoar para começar a escrever sempre em celulas nao preenchidas...

vo po-lo a contar as linhas ke ja estao preenchidas e a escrever na de baixo...

as colunas nao me interessa so quero contar o numero de linhas que estao preenchidas...

como posso fazer isso???

tem de ser com count certo???

Share this post


Link to post
Share on other sites
Fabio92

tentei fazer destas duas formas mas da erro...

nreg = oWorkbook.Cells.SpecialCells(Excel.XlCellType.xlCellTypeLastCell).Row

nreg = oWorkbook.Sheet.UsedRange.Rows.Count

alguem sabe como pode ser??

nreg é integer

 nreg = oExcelApp.Cells.SpecialCells(Excel.XlCellType.xlCellTypeLastCell).Row

assim ja esta a funcionar...

tinha de ser com a app em vez de oworkbook...

como posso fazer uma função para ordenar as linhas por id depois de ja ter os registos todos misturados???

Share this post


Link to post
Share on other sites
Caça

Se isso for possível, grava uma macro no excel e utiliza o código gerado no teu programa.


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
Caça

Tens de colocar excSheet antes


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
Fabio92

mesmo assim nao da ele continua a dar erros...

nao existe outra forma??

Share this post


Link to post
Share on other sites
Caça

Há, manda para la os dados ordenados.


Pedro Martins

Não respondo a duvidas por PM

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

×
×
  • Create New...

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.