Springen naar inhoud


- - - - -
VS 2015

Lezen En Schrijven Naar Excel-File Vanuit Verschillende Userforms

Lezen en Schrijven excel-file

  • Log in a.u.b. om te beantwoorden
Er zijn 8 reacties in dit onderwerp

#1 GuyMeyvaert

GuyMeyvaert

    Starting Developer

  • Leden
  • 6 berichten
    Laatst bezocht 04 apr 2019 12:22
  • LocatieTongeren

Geplaatst op 24 februari 2019 - 19:52

Als ik een excel-file open in een userform, dan zou ik vanuit een ander userform deze Excel-file moeten kunnen lezen en naar schrijven.

Of kan ik de excel-fiel als een soort public file openen?

Guy

#2 Dirk Andries

Dirk Andries

    Guru Developer

  • Leden
  • PipPipPipPipPipPip
  • 1163 berichten
    Laatst bezocht
  • LocatieGent

Geplaatst op 25 februari 2019 - 10:25

Bericht bekijkenGuyMeyvaert, op 24 februari 2019 - 19:52, zei:

Als ik een excel-file open in een userform, dan zou ik vanuit een ander userform deze Excel-file moeten kunnen lezen en naar schrijven.

Is dit een excel vraag of een .NET vraag?
Kan je herformuleren?

#3 GuyMeyvaert

GuyMeyvaert

    Starting Developer

  • Leden
  • 6 berichten
    Laatst bezocht 04 apr 2019 12:22
  • LocatieTongeren

Geplaatst op 25 februari 2019 - 21:10

Het is een .net vraag.

Ik wil data uit een excel-bestand lezen en ernaar wegschrijven, maar vanuit verschillende forms in .net

#4 Dirk Andries

Dirk Andries

    Guru Developer

  • Leden
  • PipPipPipPipPipPip
  • 1163 berichten
    Laatst bezocht
  • LocatieGent

Geplaatst op 26 februari 2019 - 09:43

Bericht bekijkenGuyMeyvaert, op 25 februari 2019 - 21:10, zei:

Ik wil data uit een excel-bestand lezen en ernaar wegschrijven, maar vanuit verschillende forms in .net
Is dat in 1 programma?
Zo ja, wordt dat programma door meerdere gebruikers tegelijkertijd gebruikt?

#5 GuyMeyvaert

GuyMeyvaert

    Starting Developer

  • Leden
  • 6 berichten
    Laatst bezocht 04 apr 2019 12:22
  • LocatieTongeren

Geplaatst op 26 februari 2019 - 09:50

Is inderdaad in 1 programma, en het wordt maar door 1 gebruiker tegelijk gebruikt.

#6 Dirk Andries

Dirk Andries

    Guru Developer

  • Leden
  • PipPipPipPipPipPip
  • 1163 berichten
    Laatst bezocht
  • LocatieGent

Geplaatst op 26 februari 2019 - 10:31

Bericht bekijkenGuyMeyvaert, op 26 februari 2019 - 09:50, zei:

Is inderdaad in 1 programma, en het wordt maar door 1 gebruiker tegelijk gebruikt.
Dan snap ik totaal niet wat het probleem is.

Als die forms tegelijkertijd actief zijn:
Open het bestand één maal in je programma.
Om het jezelf makkelijk te maken: giet de toegang in een klasse, maak daar een instantie van en geef die instantie door aan de verschillende forms.
Best wel zorgen dat de klasse een implementor is van de IDisposable interface, zodat het bestand ook gegarandeerd netjes kan worden gesloten.

Indien de forms niet tegelijkertijd actief zijn: sluit gewoon het bestand als je gedaan hebt met een form.

#7 Dirk Andries

Dirk Andries

    Guru Developer

  • Leden
  • PipPipPipPipPipPip
  • 1163 berichten
    Laatst bezocht
  • LocatieGent

Geplaatst op 27 februari 2019 - 10:22

Bericht bekijkenGuyMeyvaert, op 24 februari 2019 - 19:52, zei:

Als ik een excel-file open in een userform, dan zou ik vanuit een ander userform deze Excel-file moeten kunnen lezen en naar schrijven.

Zoals al gezegd in voorgaande posts: in 1 en hetzelfde programma met 1 gebruiker mag dit totaal geen probleem zijn.

Waar loopt het mis? Wat probeer je precies te doen?
Kan je eventueel de code tonen en aanduiden waar het precies mis gaat?

#8 GuyMeyvaert

GuyMeyvaert

    Starting Developer

  • Leden
  • 6 berichten
    Laatst bezocht 04 apr 2019 12:22
  • LocatieTongeren

Geplaatst op 28 februari 2019 - 08:58

Beste,
Het gaat niet over gebruiker of verschillende programma's. Ik zal het proberen uit te leggen.
Ik heb een programma voor het beheer van al onze dossiers in VBA. Ik wil dit in .net schrijven.
In het programma heb ik een keuze lijst (combobox) waarin de lijst van onze dossiers komt. Bij de keuze van een bepaald dossier opent het programma een excel-bestand waarin alle gegevens van dat dossier vervat zitten. Ik gebruik deze excel omdat daar eveneens bepaald standaard-formulieren in verwerkt zitten met een link naar de sheet met de data.
Het excel-bestand van het gekozen dossier wordt dus geopend door de actie als de waarde in de combobox wijzigt. (dit is een private sub).
Private sub Opdrachtcmb_SelectedIndex(changed (sender As Object, e As EventArgs) Handles Opdrachtencmb.SelectedIndexChanged
Dim Zoekplaats As String = Bestanden.range("C33").text & Opdrachtencmb.Text & Bestanden.range("C38").text
Dim Zoekbestand As String = Zoekplaats & Bestanden.range("D35").text & ".xlsx"
Dim VluchtData = Excelapp.Workbooks.open(Zoekbestand) --> Zoekbestand is de variabele directory en bestandsnaam onder het gekozen dossier)
Dim VluchtGeg = VluchtData.sheets("VluchtData")

... nog code
End Sub

Nadien wordt er in het userform een aantal bijkomende data toegevoegd of gewijzigd.

Als ik dan op een command knop druk kan ik in die private sub het databestand niet meer aanspreken. Door het uit een 'private sub' te gaan is het programma de link naar het excel-bestand precies kwijt.

Ik zou dus het bestand willen openen zodat ik het (zolang ik het niet sluit) kan gebruiken, lezen en naar wegschrijven.

Ik heb veel geschreven in vba-excel, waar dit geen probleem is zolang het excel-bestand open staat.

groeten,
Guy

#9 Dirk Andries

Dirk Andries

    Guru Developer

  • Leden
  • PipPipPipPipPipPip
  • 1163 berichten
    Laatst bezocht
  • LocatieGent

Geplaatst op 28 februari 2019 - 10:20

Bericht bekijkenGuyMeyvaert, op 28 februari 2019 - 08:58, zei:

Als ik dan op een command knop druk kan ik in die private sub het databestand niet meer aanspreken. Door het uit een 'private sub' te gaan is het programma de link naar het excel-bestand precies kwijt.

De variabelen Zoekplaats, Zoekbestand ,VluchtData en VluchtGeg zijn enkel gekend, te benaderen en te gebruiken in je Sub.
Als je die elders wil gebruiken moet je daarvan members van de klasse van je Form maken.


Bericht bekijkenGuyMeyvaert, op 28 februari 2019 - 08:58, zei:

Ik zou dus het bestand willen openen zodat ik het (zolang ik het niet sluit) kan gebruiken, lezen en naar wegschrijven.
1. Declareer de variabelen (inclusief je excel-app) die je nodig hebt op het niveau van de klasse van je Form (zg. instantievariabelen), i.p.v. als lokale variabelen in een Sub of Function.
2. Creëer de excel-app 1 keer.
3. Open in je Sub het Workbook (indien je al een ander geopend hebt moet je dat eerst sluiten) en vul de variabelen op. (*)
4. Bij het sluiten van je Form sluit je het huidig geopende Workbook (indien er één is) en sluit je de excel-app.

(*) Je kan het selecteren van het bestand en het openen/bewerken uit elkaar halen (wat ik zou doen)
Je hebt dan een Form om te selecteren en een andere Form om te bewerken.


Bericht bekijkenGuyMeyvaert, op 28 februari 2019 - 08:58, zei:

Ik heb veel geschreven in vba-excel, waar dit geen probleem is zolang het excel-bestand open staat.
Je moet beseffen dat je vanuit .NET als het ware Excel bestuurt van buiten af.
Dat is fundamenteel verschillend van werken met VBA in Excel.

Nu: in .Net is het ook geen probleem als je weet wat je doet.
Als je het stappenplan hierboven volgt lukt het wel, denk ik.





Ook met taq VS 2015, Lezen en Schrijven excel-file voorzien

0 gebruiker(s) lezen dit onderwerp

0 lid(leden), 0 bezoeker(s), 0 anonieme gebruikers

Inloggen


[VS 2015] Untitled 1

Met dank aan Jürgen voor de jarenlange inzet van visualbasic.be (anno dec 2000)
Met dank aan Mike en Ronneke voor de jarenlange inzet van vbib.be (anno dec 2010)
Met dank aan PascalBianca voor de jarenlange inzet van vbib.be (anno dec 2016)