• 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.

Compileerfout op selecteren werkblad

Status
Niet open voor verdere reacties.

Richie58

Gebruiker
Lid geworden
4 dec 2015
Berichten
32
Ik moet voorraden muteren van 1 groot bestand naar 3 of 4 kleinere met maximaal 1450 rijen.
Ik maak een nieuw bestand aan met een willekeurig volgnummer. Vervolgens plak ik een selectie uit “stock” naar het nieuwe bestand wat reeds geopend is (tabbladen boven excel, is een programmaatje voor die dat voor office uitvoert)
Uiteindelijk moet in het nieuwe bestand c1 en d1 worden gewist.
Bij deze actie krijg ik compileer fout in de regel Windows ("Stock") & ("d1").Activate
Ik kan niet vinden wat ik fout doe.
De rest van de regels na “ga terug naar stock” worden wel uitgevoerd.

Probleem is dat hij niet plakt en wist in het nieuw bestand. Ik hoop dat het duidelijk was.


Code:
Sub Macro4()
'
' Macro4 Macro
'   Ctrl-a
'Aanmaken nieuwe map

    Workbooks.Add
    Range("A1").Select
    ActiveCell.FormulaR1C1 = "artnummer"
    Range("B1").Select
    ActiveCell.FormulaR1C1 = "voorraad"
    Range("C1").Select
    ActiveCell.FormulaR1C1 = "=RANDBETWEEN(1000,9999)"
    Range("F9").Select
    Selection.ClearContents
    
'Nieuwe map opslaan

    stPath = "C:\Users\riphi\Documents"
    ActiveWorkbook.SaveAs Filename:=stPath & "\" & "Stock" & Range("c1").Value & ".xlsx"
    
'Plakken C1 naar D1 als waarde

      Range("C1").Select
      Selection.Copy
      Range("D1").Select
      Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
        
'Terug naar de originele stock

    Windows("Stock").Activate
    
'Telt het aantal niet lege cellen, dit bepaalt het aantal keren uit te voeren macro gedeelt door 1470

    ActiveCell.FormulaR1C1 = "=COUNTA(C[-2])-1"
    Range("D1").Select
    
'Selecteer de gewenste regels uit stock

    Rows("2:4").Select
    Selection.Cut
    
'Ga naar de nieuw gemaakte map, de waarde in d1 is als waarde geplakt zoals bijv  4343 (STOCK4343)

     Windows ("Stock") & ("d1").Activate
    
'Plak de geknipte rijen

    Range("A2").Select
    ActiveSheet.Paste
    
'Wissen cel d1 en c1

     Range("d1").Select
      Application.CutCopyMode = False
       Selection.ClearContents
     Range("c1").Select
      Application.CutCopyMode = False
       Selection.ClearContents
     
'Ga terug naar Stock

    Windows("Stock").Activate
    Rows("2:4").Select
    Selection.Delete Shift:=xlUp
    
'start de macro opnieuw indien nodig met Ctrl-a
End Sub
 

Bijlagen

Laatst bewerkt:
Je hebt het bestand zonder code geplaatst.
 
.............ben niet echt een ster in vba, begrijp daarom niet goed wat je bedoelt, kun je het voor mij iets duidelijker maken Edmoor?

Richard
 
je post een bijlage excelbestand, maar daar staat de code die je in de tekst toont niet in....

Als je een bestand met code hebt, dan opslaan als .xlsm of .xlsb en dat bestand posten
 
.....ik geloof dat ik iets ga begrijpen. Heb nu als xlsm gepost, als het goed is. Ben al een stapje verdder en begrijp dat je als macromap moeet opslaan, of personal.

Mssn kunnen jullie nu beter kijken, waarvoor alvast mijn dank.

Richard
 

Bijlagen

Je compilerfout zit op deze regel:
Windows ("Stock") & ("d1").Activate

Maak daar dit van:
Windows("Stock" & Range("D1")).Activate

Dat het allemaal beter kan laat ik maar zo omdat je kennelijk in de leerfase zit.
Vragen zijn hier uiteraard welkom :)
 
Perfect Edmoor, foutmelding is weg alleen plakt hij de gekozen artikelen uit "stock "nog niet in het nieuwe bestand.....

Richard
 
Overigens was het natuurlijk geen compileerfout maar een runtime error (uitvoeringsfout)...
 
Perfect Edmoor, foutmelding is weg alleen plakt hij de gekozen artikelen uit "stock "nog niet in het nieuwe bestand.....

Richard

Ik zou graag nog even de oplossing hebben voor het probleem "niet plakken in het nieuwe bestand", de rest loopt, ben ik al blij mee.....

Richard
 
Echt helder vind ik het niet. Wil je het bestand stock.csv opgesplitst hebben in verschillende Excelbestanden met maximaal 1450 regels? Waarom moet de bestandsnamen random worden met het risico dat er 1 overschreven wordt? Staat het .csv bestand in dezelfde map als waar de doelbestanden moeten komen of in een andere map?
 
Hallo VenA,

Voor mij is het te begrijpen, ik moet splitsen en mijn kennis gaat nu eenmaal nog niet verder. Weet niet hoe je automatisch unieke bestandsnamen moet genereren die allemaal met "Stock" moeten beginnen, dus loste op deze, voor jullie een omweg, maar zo op.

Alle bestanden komen in 1 map te staan en kunnen na update in mijn webwinkel weer worden verwijdert. Ik kan max 1470 rijen tegelijk exporteren en de CSV's die ik ophaal bij de groothandel wisselen van grootte, afhankelijk van hun mutaties en dat een keer of 10 per dag.

Indien dus mogelijk zou ik graag weten hoe je ze plakt in het nieuwe bestand en automatisch weer opslaat. Ik koos voor random tussen 1000 en 10000 om het risico op doublures te verkleinen.

Zou ze liever automatisch binnenhalen via de FTP server maar dat is weer een ander probleem en voor hier niet de juiste plek.

Richard
 
Voor random kan kan je beter de datum en tijd gebruiken.

Probeer het zo eens
Code:
Sub VenA()
  c00 = "E:\Temp\stock.csv"
  c01 = "E:\Temp\"
  t = 1
  Application.ScreenUpdating = False
  With GetObject(c00)
    ar = .Sheets(1).Cells(1).CurrentRegion
    .Close 0
  End With
  x = "|1"
  For j = 2 To UBound(ar)
    If (j - 1) Mod 1465 <> 0 And j < UBound(ar) Then
      x = x & "|" & j
      t = t + 1
     Else
      If j = UBound(ar) Then
        x = x & "|" & j
        t = t + 1
      End If
      With Workbooks.Add
        .Sheets(1).Cells(1).Resize(t, 2) = .Application.Index(ar, Application.Transpose(Split(Mid(x, 2), "|")), Array(1, 2))
        .SaveAs "Stock " & Format(Now, "yyyymmdd hhmmss"), 51
        .Close 0
      End With
      x = "|1|" & j
      t = 2
    End If
  Next j
End Sub
 
Laatst bewerkt:
Beste Wizzkids,

Ik ga er mee aan de slag, terug naar de scholbanken...............
Bedankt voor jullie moeite en inzet.

Richard
 
random tijd is bestandsnaam

Beste helpers,

Is voor VenA.

Je vba werkt verschrikkelijk mooi, scheelt me veel werk................. maar, krijg regelmatig de melding dat een bestand al bestaat (de 3e), overschrijven ja of nee, dus onderbreek ik en krijg de foutmelding, zie plaatjes.

Al start ik iedere keer Excel opnieuw op, de fout komt terug............. de ellende is............. soms gaat het wel goed.

Code:
'Voorraden splitsen in blokken van 1490
'Ctrt-a

Sub Voorraad_splitsen()

  c00 = "C:\Users\riphi\Documents\stock.csv"
  c01 = "C:\Users\riphi\Documents\"
  t = 1
  Application.ScreenUpdating = False
  With GetObject(c00)
    ar = .Sheets(1).Cells(1).CurrentRegion
    .Close 0
  End With
  x = "|1"
  For j = 2 To UBound(ar)
    If (j - 1) Mod 1490 <> 0 And j < UBound(ar) Then
      x = x & "|" & j
      t = t + 1
     Else
      If j = UBound(ar) Then
        x = x & "|" & j
        t = t + 1
      End If
      With Workbooks.Add
        .Sheets(1).Cells(1).Resize(t, 2) = .Application.Index(ar, Application.Transpose(Split(Mid(x, 2), "|")), Array(1, 2))
        .SaveAs "Stock " & Format(Now, "hhmm ss mmdd yyyy"), 51
        .Close 0
      End With
      x = "|1|" & j
      t = 2
    End If
  Next j
End Sub
 

Bijlagen

  • Foutmelding file bestaat al overschrijven of niet.png
    Foutmelding file bestaat al overschrijven of niet.png
    29,9 KB · Weergaven: 36
  • Bestand bestaat al.png
    Bestand bestaat al.png
    18,3 KB · Weergaven: 36
Dan is mijn code te snel.

Waarom sla je het op in het formaat hhmm ss mmdd yyyy? Dat sorteert toch niet lekker?
Code:
.SaveAs "Stock " & Format(Now, "yyyymmdd hhmmss")&Replace(Timer, ",", ""),51
 
Klopt VenA. Voor mij is het de leesbaarheid, heb het wel gewijzigd nu naar "hhmmss ddmmyyyy". Nog een vraagje, wat betekent die "51"aan het einde?

De notatie van de bestandsnaam is nu "Stock 165709 090920196102998.xlsx" is dat laatste een soort intern volgnummer?

Ziet er overigens nu wel gelikt uit hoor, ben er erg blij mee............

Richard
 
51 is het fileformat in dit geval .xlsx Mag weggelaten worden maar nu is het zeker dat het als .xlsx weggeschreven wordt.

De Timer is een klokpuls van jouw computer en werkt tot de milliseconde nauwkeurig.
 
Geweldig VenA. Ik zet voor de GIGA nog ULTRA.
Bedankt voor je uitmuntende hulp.............

Richard
 
Je hebt de msec ook in format.
Code:
Format(Now, "yyyymmdd hhmmssms")
 
Ook dank je HSV...........

Probleem helemaal opgelost, ook bedankt voor het meedenken.

Richard
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan