Het bestand wordt elders opgeslagen !

Status
Niet open voor verdere reacties.

satdirk

Gebruiker
Lid geworden
26 feb 2007
Berichten
32
Eerst de bedoeling van mijn werk. ik heb met excel en vba een factuur gemaakt maar nu is dit niet zo goed als daar iemand mee gaat werken die niets van excel af weet dus dacht ik ,ik maak dat in visual basic maar die taal ken ik niet dus probeer ik dat maar te leren.
Nu Is het de bedoeling dat er via het zoeken van een naam van de klant op het factuur al de klant zijn gegevens komen te staan naam,adres,postcode enz..... .

Het eerste wat ik nu probeer is de gegevens van de klanten in een excel bestand te stoppen het bestand bestaat al met 6000 klanten maar er komen er altijd nieuwe bij dat weten we .

Nu met wat ik vond en een beetje mee heb geprutst is dit iets wat al 3 dingen weg schrijft in kolom a,b, en c
Maar er loopt iets mis bij het opslaan.
De ene keer verloopt alles goed, de andere keer krijg ik een melding van er bestaat al een bestand met deze naam wil je dit overschrijven , en nog een andere keer slaat hij het bestand op in een andere map c:\naam\mijndocumenten\excel.xsl

deze code gebruik ik nu

HTML:
Imports Excel = Microsoft.Office.Interop.Excel
Public Class Form1
    Dim APP As Excel.Application
    Dim worksheet As Excel.Worksheet
    Dim workbook As Excel.Workbook
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    End Sub

    Private Sub btnLezen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLezen.Click
        TextBox1.Text = worksheet.Cells(1, 1).Value
        TextBox2.Text = worksheet.Cells(1, 2).Value
    End Sub

    Private Sub btnSchrijven_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSchrijven.Click
        APP = New Excel.Application
        workbook = APP.Workbooks.Open("c:\vbexcel\test.xlsx")
        worksheet = workbook.Worksheets("Blad1")
        Dim NR As Long
        Dim rij As String
        Dim klantnr As Integer
        NR = 1
        rij = worksheet.Cells(NR, 1).Value
        Do While NR > 0
            If rij = "" Then
                rij = worksheet.Cells(NR, 1).Value
                klantnr = NR
                worksheet.Cells(NR, 1).Value = TextBox1.Text
                worksheet.Cells(NR, 2).Value = TextBox2.Text
                worksheet.Cells(NR, 3).Value = klantnr
                NR = 0
            Else
                NR = NR + 1
                rij = worksheet.Cells(NR, 1).Value
            End If
        Loop
    End Sub
    Private Sub Form1_FormClosed(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles MyBase.FormClosed
        workbook.Save()
        workbook.Close()
        APP.Quit()
    End Sub

End Class
 
1) je kunt dit ook oplossen met forms in excel zelf.
2) indien je excel puur voor data gebruikt kun je excel beter benaderen als database, in plaats van interop. Dat maakt je applicatie een stuk krachtiger.

De save warning kun je voorkomen door APP.DisplayAlerts op false te zetten. Qua locatie is dat wat lastiger. In principe zou het altijd goed moeten gaan, maar blijkbaar is de applicatie soms zijn home location kwijt. Mogelijk omdat de gebruiker mindere rechten heeft.
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan