Gå til innhold

Åpne eksisterende xls fil og sett inn verdi


Anbefalte innlegg

Heisann.

 

Jeg har klart å få til å skrive to verdier til et nytt excel dokument, men lurer på hvordan jeg kan åpne et eksisterende excel dokument å skrive de samme verdiene til dokumentet.

Hvordan gjør jeg dette?

 

Dette er koden jeg bruker nå:

'Start Excel
	oExcel = CreateObject("Excel.Application")
	oBook = oExcel.Workbooks.Add

	'Sette inn verdier i Excel
	oSheet = oBook.Worksheets(1)
	oSheet.Range("B1").Value = My.Computer.FileSystem.ReadAllText(Dir & PCFil)
	oSheet.Range("B2").Value = My.Computer.FileSystem.ReadAllText(Dir & ADFil)
	oExcel.Visible = True
	oExcel.UserControl = True

Endret av miXer
Lenke til kommentar
Videoannonse
Annonse

Jeg fant det ut selv.

 

Med denne koden:

'Start Excel
	oExcel = CreateObject("Excel.Application")
	oBook = oExcel.Workbooks.Open(Dir & excelbok)

	'Sette inn verdier i Excel
	oSheet = oBook.Worksheets(1)
	oSheet.Range("B1").Value = My.Computer.FileSystem.ReadAllText(Dir & PCFil)
	oSheet.Range("B2").Value = My.Computer.FileSystem.ReadAllText(Dir & ADFil)
	oBook.SaveAs(Environment.GetEnvironmentVariable("temp") & "\" & excelbok)
	oExcel.Visible = True
	oExcel.UserControl = True

Lenke til kommentar

Et nytt spørsmål angående dette.

 

Jeg har en knapp på min form som åpner et eksisterende excel dokument og henter inn tekst fra to .txt filer og setter inn i celle B1 og B2. Når jeg nå lukker excel programmet, selvom jeg har lagret eller ikke så stenger ikke prosessen seg i Task Manager. Prosessen blir borte når jeg stenger programmet mitt.

 

Noen som vet hvorfor?

 

Her er koden:

'Start Excel
		oExcel = CreateObject("Excel.Application")
		oBook = oExcel.Workbooks.Open(Dir & excelbok)

		'Sette inn verdier i Excel
		oSheet = oBook.Worksheets(1)
		oSheet.Range("B1").Value = My.Computer.FileSystem.ReadAllText(Dir & PCFil)
		oSheet.Range("B2").Value = My.Computer.FileSystem.ReadAllText(Dir & ADFil)
		oExcel.Visible = True
		oExcel.UserControl = True

Lenke til kommentar

Sånne objekter terminerer ikke uten videre bare fordi koden er ferdig med dem.

Du skriver antakelig .net, det er ikke min dialekt, i klassisk VB må du skrive noe a la

 

oExcel.Quit

DoEvents

Set oExcel = Nothing

 

(.net er uten Set ? mener det)

 

OG du må forvisse om at det faktisk skjer, at ikke Excel står og spør om noe (Save Changes ? og desslike).

Dette i motsetning til f.eks. Access, som dauer i det sekund du slutter å tenke på ham. Go figure.

 

HTH. Beste hilsen Harald

Lenke til kommentar

Det er .NET.

 

Jeg vet at jeg må ha med Excel.Quit() dersom jeg skal lukke fila etter at verdiene er sendt til den.

 

Men poenget her er at programmet skriver verdiene til excel arket og lar brukeren ha kontroll over excel programmet og lukker det når brukeren er ferdig. Kan jeg da få koda det slik at excel prosessen stenger seg når brukeren stenger excel?

Lenke til kommentar

Denne kodesnutten sjekker om EXCEL er i prosessvinduet, og i så fall blir den fjernet, iallfall gjør den det hos meg når jeg kjører som administrator på winXP Pro:

 

Dim sProcesses() As System.Diagnostics.Process
Dim sProcess As System.Diagnostics.Process
sProcesses = System.Diagnostics.Process.GetProcesses()
For Each sProcess In sProcesses
If sProcess.ProcessName = "EXCEL" Then sProcess.Kill()
Next

Lenke til kommentar
Denne kodesnutten sjekker om EXCEL er i prosessvinduet, og i så fall blir den fjernet, iallfall gjør den det hos meg når jeg kjører som administrator på winXP Pro:

 

Dim sProcesses() As System.Diagnostics.Process
Dim sProcess As System.Diagnostics.Process
sProcesses = System.Diagnostics.Process.GetProcesses()
For Each sProcess In sProcesses
If sProcess.ProcessName = "EXCEL" Then sProcess.Kill()
Next

 

Tusen takk. Nå blir prosessen borte.

Men poenget her er at prosessen og programmet skal bli borte når brukeren klikker på avslutt, ikke når programmet er ferdig med det den skal gjøre.

Er dette mulig? Kan programmet sjekke når brukeren lukker excel og da kille prosessen?

Lenke til kommentar

Fant ut av dette selv.

Ved å bruke:

oExcel = Nothing

oBook = Nothing

oSheet = Nothing

End

 

så slipper den alle variablene som programmet bruker, noe som i seg selv ikke gjorde at excel forsvant fra prosess lista, men når jeg la på End på slutten, så gav den full kontroll til bruker, og Excel ble borte fra lista når bruker lukte Excel!

 

:new_woot:

Lenke til kommentar

Da har jeg funnet en løsning som stenger excel programmet som er blitt åpnet uten at programmet blir lukket.

 

Programmet finner PID'en på excel instansen programmet åpner og killer den instansen av excel etter at programmet er ferdig med instansen og har frigitt alle resursser til instansen.

 

Her er koden:

'Get the PID for excel
Dim y As Integer
		Dim currentprocess As Process = Process.GetCurrentProcess()
		Dim myExcelPID As Integer

		'Make a list of all processes named excel
		Dim localByName As Process() = Process.GetProcessesByName("excel")
		For y = 0 To localByName.GetUpperBound(0)
			myExcelPID = localByName(y).Id
			Exit For
		Next

'The code i use to kill excel

oExcel.DisplayAlerts = False
		oBook.SaveAs(Dir & eBook)
		oSheet = Nothing
		oBook.Close()
		oBook = Nothing
		System.Runtime.InteropServices.Marshal.ReleaseComObject(oExcel)
		oExcel = Nothing

		Dim aProcesses() As Process = Process.GetProcesses
		Dim aProcess As Process

		For y = 0 To aProcesses.GetUpperBound(0)
			If aProcesses(y).Id = myExcelPID Then
				aProcess = aProcesses(y)
				Try
					aProcess.Kill()
				Catch ex As Exception

				End Try
				Exit For
			End If
		Next
		GC.Collect()
		Process.Start(eBook)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...