Getallen opgeslagen als tekst omzetten naar getal

  • Onderwerp starter Onderwerp starter boome
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

boome

Gebruiker
Lid geworden
11 mei 2009
Berichten
43
Ik heb een centraal overzicht met allerhande gegevens met betrekking tot openstaande facturen, deze sheet linkt door naar 2 "hulpfiles" waarin data staan die rechtstreeks uit de Navision SQL-database komen.

Voor een van de hulpfiles worden de data opgehaald met behulp van Navision Jet-Reports.

Om een en ander te automatiseren vertrek ik vanuit het centrale overzicht met een macro naar de 2 hulpbestanden om de data hierin bij te werken.

Het probleem zit hem nu in de hulpfile met jet-reports, de code om deze aan te sturen heb ik van de support site gehaald en deze werkt ook.
Enkel worden de opgehaalde getallen als tekst opgeslagen, deze moeten dus ook naar een getal omgezet worden om deze te kunnen gebruiken in een V-LOOKUP.
Ik heb een VBA-code gevonden om dit voor elkaar te krijgen, alleen het werkt dus niet:
dit is de code die ik momenteel gebruik:

De rode tekst is de code die ik toegevoegd heb:
Ik heb al het een en ander geprobeerd maar het lukt me niet;
Nu krijg ik een compileerfout op het onderdeel rows.
Ik ben nog een beetje een VBA-leek, ben het nog met vallen en opstaan aan het leren, dus alle hulp is welkom.

Code:
Sub B_Betaald_ja_nee()

  Dim XLApp As Object
  Set XLApp = New Excel.Application
  

  'Workbooks don't necessarily start visible or interactive.
  'If the user will interact with the workbook, you need to set the following two values.
  
  XLApp.Visible = True
  XLApp.Interactive = True

  'Add-ins do not automatically open when using automation, so the Jet Reports add-in
  'must be opened manually. You must also open any other add-ins that you need.
  
  XLApp.Application.Workbooks.Open ("C:\program files\JetReports\jetreports.xla")

  'Open the report workbook

  XLApp.Application.Workbooks.Open ("L:\Common\DOCUMENT\Klanten\Betalingen\2009\openstaande facturen.xls")

  
  'Run the jet report.

  'IMPORTANT NOTE: Jet Reports intends to keep the below command working in future versions
  'of Jet Reports. All other menu commands might change. They might work now, but could
  'break in future version. Please do not use any other Jet Reports commands in your software.

  XLApp.Application.Run "JetReports.xla!JetMenu", "Report"

  '
  'Avoid the message asking if the workbook should be saved by marking it as already saved.
  'Be careful with this. You are assuming that the workbook does not need to be saved since it is a report
  'template.

   XLApp.Application.Workbooks("openstaande facturen.xls").Activate
   
          [COLOR="Red"]  With .Range("E5:E" & .Cells(.Rows.Count, "E").End(xlUp).Row)
            .Value = .Value
        End With[/COLOR]      
   XLApp.Application.Workbooks("openstaande facturen.xls").Save
  
  'Close Excel
  
  XLApp.Quit

End Sub
 
Ik heb de code nog wat verder aangepast als volgt

Code:
XLApp.Application.Worksheets("Report").Activate
   
   With ActiveSheet
        With .Range("E5:E" & .Cells(.Rows.Count, "E").End(xlUp).Row)
            .Value = .Value
        End With
    End With

De code zelf werkt wanneer ik ze via een macro uitvoer in het workbook openstaande facturen zelf.

Echter wanneer de code uitgevoerd moet worden via een macro die vanuit een ander workbook start, lukt het niet.
Ik krijg momenteel zelfs geen foutmelding meer, maar de code wordt ook niet uitgevoerd.
Ik heb geen idee wat ik fout doe
 
Boome,

Het onderstaande zou wel moeten werken. Alleen het schuingedrukte is toegevoegd.

With ActiveSheet
With .Range("E5:E" & .Cells(.Rows.Count, "E").End(xlUp).Row)
.NumberFormat = "#,##0"
.Value = .Value
End With
End With

Groet,

Ronald
 
Kan dat niet simpeler ?

Code:
Sub B_Betaald_ja_nee()
  Workbooks.Open "L:\Common\DOCUMENT\Klanten\Betalingen\2009\openstaande facturen.xls"  
  With workbooks.Open ("C:\program files\JetReports\jetreports.xla")
    .Application.Run "JetReports.xla!JetMenu", "Report"
  End with
  With Workbooks("openstaande facturen.xls")   
    With [COLOR="Blue"].sheets(1).[/COLOR]usedrange.columns(5)
      .Value = .Value
    End With      
    .Save
    .Close false
  End with
End Sub

Het was handiger geweest als de macro 'Report' in de Workbook_Open() gebeurtenis van 'jetreports.xla' had gestaan; dan was die automatisch uitgevoerd bij het openen van het document.

Vermijd in VBA Select en Activate: overbodig, vertragend en verwarrend (zoals in dit geval).
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan