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 SubEDIT: 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 SubEli 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.