Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB.NET, VBA: [VB2008] Tietojen siirtäminen exceliin?

Nemo [26.11.2008 13:36:10]

#

Voiko Visual Basicissa kirjoitettua / saatuja tuloksia lähettää erilliseen excel-tiedoston tiettyihin soluihin?

Miten tämä käy käytännössä?

Esim. textboxiin on kirjoitettu 1234 ja tämä luku halutaan siirtää excelin tiettyyn soluun. Mahdollisesti myös laskutoimituksen tulos, joka on suoritettu koodirivillä?

Anyone, please help me!?

tsuriga [26.11.2008 14:44:40]

#

Aika hiljaseen oon VB(A):lla säätäny, mutta tällainen löyty haun ensimmäisenä hakutuloksena: http://www.daniweb.com/forums/thread9342.html

Eli vapaasti käännettynä: lisää Excel-kirjasto projektin viittauksiin ja sovella koodia:

Private Sub btn1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn1.Click
    Dim xlApp As Excel.Application
    Dim xlSheet As Excel.Worksheet
    Dim xlRange As Excel.Range

    Try
        'Avataan tiedosto C:\test.xls Exceliin
        xlApp = New Excel.Application
        xlApp.DisplayAlerts = False
        xlApp.Workbooks.Open("c:\test.xls")

        'Vaihdetaan 1,1 solun arvoksi Textbox1:n teksti
        xlSheet = xlApp.Sheets(1)
        xlRange = xlSheet.Cells(1, 1)
        xlRange.Value = Textbox1.Text

    'Napataan virheet
    Catch ex As Exception
        Textbox1.Text &= ex.ToString
    'Huolehditaan roskienkeruusta
    Finally
        xlApp.Workbooks.Close()
        ReleaseComObject(xlRange)
        ReleaseComObject(xlSheet)
        ReleaseComObject(xlApp)
        xlSheet = Nothing
        xlApp = Nothing
        GC.Collect()
    End Try
End Sub

EDIT: Tiedä sitten, saako tämän toteutettua jotenkin helpommin VB08:ssa...

Nemo [27.11.2008 09:45:10]

#

Juu ei.. tai mä en ainakaan saa tuolla tavalla toimimaan.

Tosin, löysin valmiin esimerkkiohjelman, joka kumman syystä suostuu kääntämään useiden virheilmoituksien jälkeen.

Dim objExcel As New Microsoft.Office.Interop.Excel.Application
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click


        With objExcel

            .Visible = True
            .Workbooks.Open(My.Application.Info.DirectoryPath & "\PCSample.xls")

        End With
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        With objExcel

            .Visible = True
            .Workbooks.Add()
            .Range("A1").Value = "A1 Construction, Inc."
            .Range("A1").ColumnWidth = 20
            .Range("A1").Font.Bold = True
            .Range("A2").Value = "So. Main St."
            .Range("A3").Value = "Hartford" & ", " & "CT"
        End With
    End Sub

Eli button1:llä avataan valmis excel tiedosto ja button2:lla luodaan uusi excelpohja kyseisten solutietojen mukaisesti.

EDIT: Valmis esimerkkiohjelma kyllä suorittaa debugin, mutta sitten jos yritän itse luoda uuden ohjelman ja matkin kyseistä koodia, niin eipä onnistu.

Kun katsoo niin kyseiseen esimerkkiin on myös lisätty Interop.Office.dll tiedosto, joka on kopioitu samaan kansioon, mistä löytyy debug versio.

Tämäkin tuli kokeiltua kopioida, mutta no can do... ei toimi.


Seuraavia ideoita?

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta