visual basic -excel

Alles over programmeren en development binnen de IT-wereld
Plaats reactie
jefke

Is het mogelijk om tekst uit een excel bestand in te lezen met een visual basic progje??
Gebruikersavatar
meon
Administrator
Administrator
Berichten: 16757
Lid geworden op: 18 feb 2003, 22:02
Twitter: meon
Locatie: Bree
Uitgedeelde bedankjes: 582 keer
Bedankt: 780 keer
Provider

met tot doel... ?
CueBoy
Elite Poster
Elite Poster
Berichten: 1712
Lid geworden op: 23 mei 2003, 23:13
Uitgedeelde bedankjes: 5 keer
Bedankt: 10 keer

Doel : misschien opvullen van een db ? (ik roep maar wat)
Inlezen : als de data gestructureerd is (wat toch wel een minimum vereiste is, denk ik zo), zo ik een aanraden om de excel file te bewaren als een csv (comma seperated value). Dan kun je waarschijnlijk lijn per lijn inlezen, en dan de verschillende 'variabelen' opvullen door je lijn op te splitsen bij elke komma (of hoe leg je zoiets uit :-) )
If you can't beat them, confuse them.
Gebruikersavatar
Styno
Elite Poster
Elite Poster
Berichten: 1440
Lid geworden op: 06 nov 2003, 17:38
Locatie: Somewhere over the rainbow....

Of, je steekt ze eerst in een database ipv een excel en gaat dan odbc'en...

edit: typo

Styno
echo '[q]sa[ln0=aln256%Pln256/snlbx]sb3135071790101768542287578439snlbxq'|dc
echo '16i[q]sa[ln0=aln100%Pln100/snlbx]sbA0D4D465452snlbxq'|dc
Afbeelding
jefke

das veel te veel ineens waar ik niet aan uit kan, ik wil een progje maken, zodat ik een (groot) excel bestand dat ik op de harde schijf heb staan, en daaruit de lijnen met bepaalde woorde of letters halen en onder elkaar te zien krijg.
Gebruikersavatar
SIR
Pro Member
Pro Member
Berichten: 321
Lid geworden op: 27 nov 2003, 14:47
Locatie: Borsbeek, A'pen

Dat is allemaal mogelijk.

Je moet in VB de Excel file openen als een database en dan vanuit VB de VBA scripts van Excel gebruiken om de data op te halen (de klassieke "cells (x,y)" commands).

Nadat je de data hebt opgehaald, kan je via de string-commands doen met de tekst wat je wil en terug wegschrijven naar waar je wil.
jefke

alvast bedankt,
het is al een serieuze steun om te weten dat het gaat, alleen weet ik nog niet hoe, ik heb al vanalles geprobeert om het exel bestand in te voeren, maar het lukt echt niet, hoe doe je dat juist.

Is het mogelijk om een een lijn aan te duiden afhankelijk van een woord, dat in een bepaalde kolom staat?

greet
ubremoved_539
Deel van't meubilair
Deel van't meubilair
Berichten: 29849
Lid geworden op: 28 okt 2003, 09:17
Uitgedeelde bedankjes: 434 keer
Bedankt: 1972 keer

Gewoon Google'n... geef "reading excel files in visual basic" in als search, en de antwoorden vliegen je rond het hoofd. Beetje moeite doen kan nooit echt kwaad.
Gebruikersavatar
SIR
Pro Member
Pro Member
Berichten: 321
Lid geworden op: 27 nov 2003, 14:47
Locatie: Borsbeek, A'pen

Je kan beginnen met
Dim ExcelDB as Database

Set ExcelDB = OpenDatabase("path van de file als string")

en dan kan je via
ExcelDB.Worksheets("naam van de worksheet").Cells(x,y)

data gaan ophalen.

Met
ExcelDB.Worksheets("naam van de worksheet").Columns("B").Find("woord dat je zoekt", LookIn:=xlValues, lookat:=xlWhole)

kan je vanalles gaan zoeken.
Gebruikersavatar
SIR
Pro Member
Pro Member
Berichten: 321
Lid geworden op: 27 nov 2003, 14:47
Locatie: Borsbeek, A'pen

Is het nodig om het via een VB-programma aan de data te moeten en deze te verwerken?

Je kan het nog veel eenvoudiger doen wanneer je je script in de VB-editor van Excel zelf schrijft. Dan heb je al die links vanuit een VB programma met Excel niet van doen.
jefke

ik probeer zelf wat te leren programeren, maar daar snap ik nu eens niks van.

going crazy

greet
Gebruikersavatar
SIR
Pro Member
Pro Member
Berichten: 321
Lid geworden op: 27 nov 2003, 14:47
Locatie: Borsbeek, A'pen

In Excel zit er ook een VB-editor (vanaf office 97 geloof ik) waarin je eveneens forms,modules,... kan aanmaken. Dit heeft als voordeel dat je vanuit een VB-script geen link meer moet leggen naar de Excel file omdat je al in die file bezig bent.

Daardoor moet je al de dingen zoals"OpenDatabase" e.d. niet doen en kan je de waarde van bepaalde cellen ophalen door:

Worksheets("naam van de worksheet").Cells(x,y).value

Daarna kan je d.m.v. string commando's doen wat je wil met de tekst.
jefke

Ik kan nog maar een beetje, met vb werken, maar in excel werkt da volgens mij toch helemaal anders.

hoe kan ik ervoor zorgen, dat het progje dat ik maak geopend is als ik de excel file open.

is het mogelijk om aan de hand van bepaalde letters, lijnen te selecteren en die bovenaan onder elkaar te zetten?
Gebruikersavatar
SIR
Pro Member
Pro Member
Berichten: 321
Lid geworden op: 27 nov 2003, 14:47
Locatie: Borsbeek, A'pen

Het werk redelijk hetzelfde. Je maakt een form aan en modules en je bent vertrokken.

Hoe het werkt om een macro te laten runnen bij het openen van een Excel file weet ik niet direkt, maar je kan de macro achter een command button steken via "tools" => "customize"

[quote="jefke"]is het mogelijk om aan de hand van bepaalde letters, lijnen te selecteren en die bovenaan onder elkaar te zetten?[/quote]

Wat bedoel je hiermee? Dat je gaat zoeken in de Excel file naar een bepaalde letter en al de lijnen die deze letter bevatten ga je bovenaan zetten?
jefke

Ja, idd dat bedoel ik.

ge weet nie hoe je het programma kan laten werken als je de file opent, maar weet je of het mogelijk is of niet?
Gebruikersavatar
SIR
Pro Member
Pro Member
Berichten: 321
Lid geworden op: 27 nov 2003, 14:47
Locatie: Borsbeek, A'pen

Volgens mij moet je eerst de Excel file openen en dan de macro opstarten. Kon in de help van Excel niets anders vinden.
steve

Ik heb eigenlijk een gelijkaardig probleem, ik wil ook een programma maken waarmee bepaalde lijnen uit een excel bestand gelezen worden en in een tekstvan geplaatst worden, de lijnen die in het tekstvak komen moeten afhankelijk zijn van een ingevoerd teken.

maar ik snap al dat het niet makkelijk zal zijn, dus we zulle zomaar ergens beginnen, wie kan er mij vertellen hoe ik bijvoorbeeld de 13de lijn uit een excel bestand in een tekstvak te zien kan krijgen als ik op een knop druk.
Gebruikersavatar
SIR
Pro Member
Pro Member
Berichten: 321
Lid geworden op: 27 nov 2003, 14:47
Locatie: Borsbeek, A'pen

Is dat tekstvlak terug te vinden in een VB-form (visual studio progje) of in een form van de VB-editor van Excel????
steve

In een visual basic programma.

Ik zal even beschrijven wat ik uiteindelijk wil bereiken:

ik heb namelijk een vrij groot excel bestand, en ik wil een programma'tje maken waarmee ik de volgende dingen kan:

ik wil dat ik in een tekstvak één of meerdere tekens moet ingeven, en dat er dan in een excel bestand naar die tekens gezocht word, de lijnen waarin deze tekenreeks voorkomt moet weergegeven worden in een tekstvak of dergelijke.
Dan zou ik ook nog willen dat ik kan kiezen in welke kolomen de tekens worden gezocht 1.2.3. of alle drie tegelijk

dus bijvoorbeeld ik zoek het woord "aap", dan krijg ik de keuze of ik het woord "aap" in alle drie de kolommen zoek of in één specifieke kolom van deze drie. stel ik kies voor de optie om te zoeken in de 2de kolom, dan worden de lijnen waarin het woord "aap" in de 2de kolom staan weergegeven.

:eek: :eek: :eek:

Is het trouwens ook mogelijk om vanuit een visual basic programma lijnen bij te voegen in een excel programma?

Vriendelijke groet steve.
Lukse
Premium Member
Premium Member
Berichten: 662
Lid geworden op: 28 okt 2003, 20:51

Ik snap nie waarom iedereen zo'n dingen met een vb app wilt doen.
Dit is perfect mogelijk (en stukken simpeler) in excel zelf.
Gebruikersavatar
SIR
Pro Member
Pro Member
Berichten: 321
Lid geworden op: 27 nov 2003, 14:47
Locatie: Borsbeek, A'pen

Dat is zeker zo. Als je de VB-editor van Excel gebruikt, dan moet je in visual studio geen gebruik maken van al doe database statements. (Ik had dat hierboven reeds ergens gemeld)
Snakehit

hier het volledige antwoord

VOOR VB.NET

' Open Application
Dim objApp As Excel.Application
Dim objBook As Excel._Workbook
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim objBooks As Excel.Workbooks
Dim objSheets As Excel.Sheets
Dim objSheet As Excel._Worksheet
Dim range As Excel.Range

If chkNieuw.Checked = True Then
'New File
Try
ObjApp = New Excel.Application
objBooks = ObjApp.Workbooks
objBook = objBooks.Add
objSheets = objBook.Worksheets
objSheet = objSheets(1)

'Start Cell
range = objSheet.Range("A1", Reflection.Missing.Value)
range = range.Resize(20, 20)

'Fill in
ObjApp.Application.Cells(1, 1).Value = "Name"
ObjApp.Application.Cells(2, 1).Value = "First Name"
ObjApp.Application.Cells(3, 1).Value = "City"

ObjApp.Application.Cells(1, 2).Value = txtName.Text
ObjApp.Application.Cells(2, 2).Value = txtFirst.Text
ObjApp.Application.Cells(3, 2).Value = txtCity.Text

'Visible
ObjApp.Visible = True
ObjApp.UserControl = True

Catch ex As Exception
MsgBox("Programerror:" & ex.Message)
End Try

Else

Try
'A excisted file -> Fill in
Dim ObjApp As New Excel.Application
Dim ObjWorkSheet As Excel.Worksheet

'Open File
'YOU NEED TO CREATE THIS FILE BEFORE YOU CAN RUN THIS
ObjApp.Workbooks.Add()
ObjApp.Workbooks.Open("C:\Test.xls")
Dim ObjW = ObjApp.ActiveWorkbook

ObjWorkSheet = ObjApp.Worksheets(1)

ObjWorkSheet.Application.Cells(1, 1).Value = "Name"
ObjWorkSheet.Application.Cells(2, 1).Value = "First Name"
ObjWorkSheet.Application.Cells(3, 1).Value = "City"

ObjWorkSheet.Application.Cells(1, 2).Value = txtName.Text
ObjWorkSheet.Application.Cells(2, 2).Value = txtFirst.Text
ObjWorkSheet.Application.Cells(3, 2).Value = txtCity.Text

'Visible
ObjApp.Visible = True
ObjApp.UserControl = True

Catch ex As Exception
MsgBox("Programerror:" & ex.Message)
End Try
End If

'Close
'YOU NEED TO DO THIS
'If you dont do this, i can swear you, if you shutdown youre computer
'you will have a lot of errors about Excel files that are open :)
range = Nothing
objSheet = Nothing
objSheets = Nothing
objBooks = Nothing
End Sub
Snakehit

is puur uiteigen noodzaak gecreerd
kan je nog veel verder in gaan
tot Grafieken, tabellen, fonts, underline enzo

voor meer info neem contact op
[email protected]
Plaats reactie

Terug naar “Development”