Avatar billede DonDaase Novice
13. januar 2014 - 22:36 Der er 5 kommentarer og
1 løsning

Læse i Excel og lukke Excel

Hej Eksperter.

Jeg har et problem med et VB 6.0 program der læser et excel ark igennem for blanke felter. Hvis der er et blankt felt i de felter jeg læser i kommer den med en fejl og hopper ud af excel arkel.

Det virker også første gang. Men hvis jeg kører sub'en to gange i samme VB session kommer den med en fejl der siger "Run-time error '462': The remote server machine does not exist or is unavalible".

Kan nogen hjælpe?

Excel ark der søges i: http://www.aaselund.dk/_temp/Book1.xls
VB programmering som text: http://www.aaselund.dk/_temp/VB.txt

Hvad gør jeg forkert? Får jeg ikke lukket excel korrekt eller hvad sker der?
Avatar billede supertekst Ekspert
13. januar 2014 - 23:36 #1
Har indsat koden i et andet regneark og modificeret det lidt.
Får ikke fejl 462.

Skal koden afbrydes når der er manglende dato?
Ved ikke om du kan bruger det til noget.


Sub OpdaterData()

Dim AntRæk As Integer
Dim Række As Integer
Dim X As Integer
Dim EPdato2 As String
Dim fejl As Integer

X = 1
Række = 1
AntRæk = 0
fejl = 0

On Error GoTo fejl

Set xlapp = CreateObject("Excel.Application")
    xlapp.Visible = True    'False

Set newbook = xlapp.Workbooks.Open("C:\Users\peter\Desktop\Eksp_JanMøller\Book1.xls")  '<----------
    newbook.Worksheets("sheet1").Range("A2").Select

EPdato = newbook.Worksheets("sheet1").Cells(X, 1).Value

AntRæk = 19    '<---- OBS  newbook.Worksheets("sheet1").Cells(Rows.Count, "A").End(xlUp).Row
Call MsgBox(AntRæk)

While Række <= AntRæk
    'Kontroler dato for fejl
    EPdato2 = newbook.Worksheets("sheet1").Cells(Række, 1).Value
    myDate = Format((DateSerial(Right(EPdato2, 4), Mid(EPdato2, 4, 2), Left(EPdato2, 2))), "dd-mm-yyyy")
    myDateCheck = (EPdato2 = myDate)
    If myDateCheck = False Or Mid(EPdato2, 4, 2) > 12 Or Left(EPdato2, 2) > 31 Then
        MsgBox ("Der er fejl i dato i række " & Række)
        fejl = 1
    End If
   
    'Kontroler beløb for fejl
    EPbelb = newbook.Worksheets("sheet1").Cells(Række, 4).Value
    If EPbelb = 0 Then
        MsgBox ("Der er intet beløb i række " & Række)
        fejl = 1
    End If
   
    'Kontroler tekst for fejl
    EPtext = newbook.Worksheets("sheet1").Cells(Række, 6).Value
    If EPtext = "" Then
        MsgBox ("Der er ingen text i række " & Række)
        fejl = 1
    End If
   
    'Kontroler konto for fejl
    EPkonto = newbook.Worksheets("sheet1").Cells(Række, 7).Value
    If EPkonto = "" Then
        MsgBox ("Der er ingen konto angivet i række " & Række)
        fejl = 1
    End If
   
    Række = Række + 1

Wend

fejl:
If fejl = 1 Then
    GoTo Cleanup
    Exit Sub
End If

Cleanup:
  newbook.Close
  Set newbook = Nothing
 
  xlapp.Quit
  Set xlapp = Nothing

End Sub
Avatar billede DonDaase Novice
14. januar 2014 - 08:42 #2
Hej.

Tak for svar.

Njaah, nu er det jo i VB 6.0 jeg har skrevet det. Ved ikke om det er 100% sammenligneligt med at skrive det i Excel? Så skarp er jeg ikke i det (endnu) :-)

Men jeg kan se at du har sat "AntRæk" til et fast tal. Det er lidt pudsigt for det er lige præcis den linje den highlighter efter fejl "462". Hvorfor har du lige præcist rettet den?

Måske skal jeg, når jeg kommer hjem, prøve at sætte "AntRæk" til et fast tal også og se om det hjælper.

I mellemtiden, hvis du/andre har flere idéer hører jeg meget gerne så jeg har noget at arbejde ud fra.

//Jan
Avatar billede supertekst Ekspert
14. januar 2014 - 08:55 #3
Årsagen til at jeg satte antal rækker = 19, var netop at der skete fejl.

Prøv med:
AntRæk = newbook.Worksheets("sheet1").Range("A65536").End(xlUp).Row
Avatar billede DonDaase Novice
14. januar 2014 - 09:40 #4
Ok, super.

Prøver så snart jeg har muligheden (i aften)

//Jan
Avatar billede DonDaase Novice
16. januar 2014 - 16:28 #5
Wohoo, det virkede. Tak for det :-)

Hælder du et svar ind jeg kan kaste point efter?
Avatar billede supertekst Ekspert
16. januar 2014 - 16:42 #6
Fint - selv tak og et svar..
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester