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!?
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...
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?
Aihe on jo aika vanha, joten et voi enää vastata siihen.