• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

overgang office 2010 naar 2016

Status
Niet open voor verdere reacties.

spoelstra

Gebruiker
Lid geworden
8 feb 2016
Berichten
36
Hallo, ik heb een routine in Excel gemaakt (via helpmij) office 2010 die uit een werkboek van elke sheet waarin de naam haai is vermeld een csv aanmaakt. Deze werkt goed.

Nu gaan we binnenkort over naar 2016 en nu geeft hij op deze routine een aantal foutmeldingen. Ik heb dit gearceerd in kleur.

Weet iemand zo zonder verder in detail uit te wijden hoe dit nu in 2016 moet worden geschreven??

Hoor graag een reactie

Jaap

Code:
[Sub inhaaisheets_wegschrijven_naar_E_data()
    ''Application.DisplayAlerts = False
    
       With Application
    .ScreenUpdating = True
    .Cursor = xlDefault
    .StatusBar = ""
''MsgBox "inhaaisheets_wegschrijven_naar_E:data\rica", vbOKCancel, "Rica"

 test = MsgBox("Do you want to make the inhaaisheets? ", vbYesNo + vbDefaultButton1)
    If test = vbYes Then
    MsgBox "haaisheet worden aangemaakt voor verwerking in Artis Kies oké"
    ElseIf test = vbNo Then
    ThisWorkbook.Close Saved = True
  
    End If
 c00 = ThisWorkbook.FullName

  For Each sh In Sheets
    If InStr(sh.Name, "haai") Then
      sh.SaveAs "E:\data\Rica" & Sheet1.Cells(6, 2) & "-" & Sheet1.Cells(1, 3) & "-" & sh.Name & ".csv", 23, , , , , , , , True
      sh.Name = Mid([COLOR="#FF0000"]sh.Name, 5[/COLOR])
    End If
  Next
ThisWorkbook.[COLOR="#FF0000"][/COLOR][COLOR="#FF0000"]SaveAs c00, 52[/COLOR]
      Sheets("AA.keuze").Select

        
         With Application
    .ScreenUpdating = True
    .Cursor = xlDefault
   
    .StatusBar = "De inhaaisheet zijn aangemaakt en weggeschreven naar E:\data\rica"

    End With
     
    End
    .StatusBar = ""
    End With
End Sub]
 
Laatst bewerkt door een moderator:
Kijk eens bij de verwijzingen van het VBA project, zijn er ontbrekende?
 
Hallo Jan Karel,

Kun je aangeven wat de rode stukjes tekst doet(handeling) en waar ik dit precies kan controleren in het VBA project?

Ben niet erg thuis in programmeren , maar misschien kun je me op weg helpen .

Alvast bedankt,

Jaap
 
Code:
sh.Name = Mid(sh.Name, 5)
Dit genereert een fout doordat de naam vd sheet maar 4 tekens lang is en je zoekt alles vanaf het 5de teken.

En voor het opslaan als fileformat kijk hier maar eens:

https://www.rondebruin.nl/win/s5/win001.htm
 
Laatst bewerkt:
Hallo Cobe,

Bedankt voor snelle reactie,


Heb inmiddels de fout ook gevonden. Het lag niet aan d eroutine dat die niet in office 2016 zou werken maar aan de omgeving waar we testen met 2016 . De routine moets de haaisheets wegschrijven naar E:\data\Rica en deze schijf was in deze testomgeving niet toegankelijk. Heb dit aangepast en nu werkt de routine ook gewoon voor 2016.

Allen bedankt.

Jaap
 
Je kunt er ook dit van maken:

Code:
Sub inhaaisheets_wegschrijven_naar_E_data()
  if MsgBox("Do you want to make the inhaaisheets? ", vbYesNo + vbDefaultButton1) = vbNo Then    ThisWorkbook.Close 0

  if MsgBox "haaisheet worden aangemaakt voor verwerking in Artis Kies oké"= vbNo Then    ThisWorkbook.Close 0
  
  sn=sheet1.range("B1:C6")

  For Each sh In Sheets
    If InStr(sh.Name, "haai") Then
      sh.SaveAs "E:\data\Rica" & sn(6,1) & "-" & sn(1,2) & "-" & sh.Name & ".csv", 23, , , , , , , , True
      sh.Name = Mid(sh.Name, 5)
    End If
  Next

  application.goto  Sheets("AA.keuze").cells(1)
  ThisWorkbook.Save
End Sub
 
Laatst bewerkt:
@snb:
ThisWorkbook.Close 0
Het eerste argument van de Close methode is een boolean, waarom zou je de compiler forceren telkens een conversie van een 0 naar false te maken?
Dus denk ik dat je beter kan schrijven
Code:
Thisworkbook.Close False
 
De binaire vertaling van een boolean is 0, 1.
De hardware kan uiteindelijk alleen met 0 en 1 overweg.
Dus daar moet het uiteindelijk op uitdraaien: die 1 en die 0.
Voor de vertaling van software naar hardware is de compiler verantwoordelijk.
Maar hoe de VBA compiler dat doet en hoe die is ontworpen: geen idee.
Dat de compiler een 0 zou vertalen in false lijkt me hoogst onwaarschijnlijk.
 
Laatst bewerkt:
Grappig als je gaat timen (en timing is alles :) ). Onder de motorkap gebeuren onverwachte dingen.

Dit routinetje:

Code:
Sub Loopje()
    Dim a As Boolean
    Dim lct As Long
    TimerStart "true"
    For lct = 1 To 1000000
        a = True
    Next
    TimerReport
End Sub

Sub test()
    Dim lct As Long
    For lct = 1 To 20
        Loopje
    Next
End Sub

Geeft:
method Average of time
0 0.004891109
FALSE 0.004945917
-1 0.005186505
1 0.005204937
TRUE 0.007210663

Marginale verschillen dus (zoals verwacht), maar een 0 gebruiken of een -1 (de waarde van True) is nét iéts sneller dan TRUE of FALSE waarbij TRUE duidelijk langzamer uitpakt dan -1. Voor de leesbaarheid van de code vind ik het overigens aanbevelenswaardig om die gegevenssoort te gebruiken die bij het argument hoort.
 
Laatst bewerkt:
Even voor de duidelijkheid: a = True heb ik dus steeds aangepast, a = 0, a = FALSE, a = -1, ...
 
QED mijn laatste zin. ;) En daarom dus niet zo 'onverwacht'.
Dank voor het testen :thumb:

De gegevenssoort boolean is overigens 0, 1 en niet true/false, noch waar/onwaar.
 
Hmm. Ik blijf toch bij gebruik van True en False, vanwege dit artikel (dit is wel VB.NET, maar geldt evengoed voor VB6):
https://docs.microsoft.com/en-us/do...eatures/data-types/troubleshooting-data-types
Meer specifiek: "You should never write code that relies on equivalent numeric values for True and False. Whenever possible, you should restrict usage of Boolean variables to the logical values for which they are designed. If you must mix Boolean and numeric values, make sure that you understand the conversion method that you select. "
Overigens is true gelijk aan -1 volgens Visual Basic 6.0 (Balena)
 
Een citaat zonder enig argument: niet sterk.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan