Kuinka saan tiedon liikkumaan VB6 ja Excelin välillä? Olen aloittelija VB6 kanssa ja pieni apu olisi tarpeen.
Minulla on VB:ssä useita textboxeja ja niistä pitäisi saada arvot Exceliin haluttuihin soluihin. Tämän pitäisi toimia myös toisin päin, elikkä Excel soluun pistetty arvo pitäisi saada lähetettyä VB6:n textboxiin.
Lisää Formille yksi buttoni (Command1) ja käy tuota koodia läpi. Pitäisi hieman raottua Excelin käyttö VB:n kautta.
ps. Lisää projektiin Excel:n referenssi, eli Project->References...->"Microsoft Excel x Object Library"->Ok, niin koodin käyttö onnistuu.
(x riippuu käyttämästäsi Excel-versiosta)
Option Explicit
Private xlDataApp As Excel.Application
Private xlDataBook As Excel.Workbook
Private ExcelWasNotRunning As Boolean
Private Sub Command1_Click()
    If Not funcOpenExcel Then
        MsgBox "ErrorTerror"
    Else
        xlDataBook.Application.Range("B2").Value = "Hello World!"
        MsgBox xlDataBook.Application.Range("B2").Value
        If ExcelWasNotRunning Then If Not xlDataBook.Application.Visible Then xlDataApp.Visible = True
    End If
End Sub
Private Sub Form_Unload(Cancel As Integer)
On Error Resume Next
    xlDataBook.Saved = True                     'Kun ei haluta tallentaa muutoksia, pitää valehdella
    xlDataBook.Close                            'Suljetaan käytetty Workbook
    If ExcelWasNotRunning = True Then           'Tarkistetaan oliko Excel käynnissä
        xlDataApp.Application.Quit              'Jos ei niin suljetaan se...
    Else
        xlDataApp.Application.Visible = True    'Muussa tapauksessa aktivoidaan se
    End If
    If Err.Number <> 0 Then Err.Clear
    Set xlDataBook = Nothing                    'Vapautetaan käytetyt xl-muuttujat
    Set xlDataApp = Nothing
    End
End Sub
Private Function funcOpenExcel(Optional file As String) As Boolean
    Dim MyXl As Object
On Error Resume Next
    funcOpenExcel = False
    ExcelWasNotRunning = False
    Set MyXl = GetObject(, "Excel.Application")
    If Err.Number <> 0 Then ExcelWasNotRunning = True   '0:lla Excel käynnissä, muuten virhe
    Err.Clear                                           'Putsataan Virhe-koodi
    Set xlDataApp = IIf(ExcelWasNotRunning, New Excel.Application, MyXl)
    Set xlDataBook = funcOpenWorkbook(file)
    If Err.Number = 0 Then funcOpenExcel = True
    Err.Clear
    Set MyXl = Nothing
End Function
Private Function FetchFile(ByVal file As String) As String
    FetchFile = Right(file, Len(file) - InStrRev(file, "\"))
End Function
Private Function funcOpenWorkbook(ByVal file As String) As Excel.Workbook
    Dim xlBook As Excel.Workbook
    Dim FileWasNotOpen As Boolean
    Dim FileName As String
    Dim i As Integer
    If file <> "" Then
        If InStr(1, file, "\") = 0 Then
            FileName = file
            file = App.Path & "\" & file
        Else
            FileName = FetchFile(file)
        End If
        If xlDataApp.Application.Workbooks.Count <> 0 Then
            For i = 1 To xlDataApp.Workbooks.Count
                If xlDataApp.Workbooks(i).name = FileName Then
                    Set xlBook = xlDataApp.Workbooks(i) 'File on auki ja se otetaan käyttöön
                    xlBook.Saved = True                 'Tiedosto suljetaan ilman talletusta, joten .Saved=true
                    xlBook.Close                        'Suljetaan avonainen tiedosto...
                    FileWasNotOpen = True               '...näin varmistetaan halutun laisen tiedoston avaaminen
                    Exit For                            'avaamalla sen uudestaan
                End If
                FileWasNotOpen = True               'tiedostoja on auki, mutta File ei ole auki
            Next
        Else
            FileWasNotOpen = True                   'Tiedostoja ei ole auki, joten File ei ole auki
        End If
        If FileWasNotOpen Then
            Set xlBook = xlDataApp.Workbooks.Open(file)
            FileWasNotOpen = False
            For i = 1 To xlDataApp.Workbooks.Count
                If xlDataApp.Workbooks(i).name = FileName Then
                    Exit For
                End If
            Next
        End If
        xlBook.Application.Workbooks(i).Activate    'Aktivoidaan avattu tiedosto
    Else
        Set xlBook = xlDataApp.Application.Workbooks.Add
    End If
    Set funcOpenWorkbook = xlBook
    Set xlBook = Nothing
End FunctionTolla data-ohjaimellla sain excelin ja vb6 kommunikoimaan mut en oikein tajua miten ton saa kirjottaa haluttuun soluun. Jos valitsen vaikka DataFieldiksi F1 kirjoittaa exceliin eri paikkaan. Ei taida toi F1 olla solun arvo?
Onko järkevää rakentaa tämän tyyppistä ohjelmaa data-ohjaimella?
Aihe on jo aika vanha, joten et voi enää vastata siihen.