1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | Sub test() ' Macro recorded 9-10-2012 by xxx GetObject ("P:\bestand.csv") Dim wkb As Workbook, sht As Worksheet 'Deze regel opent Wel het bestand, maar als object. Het is niet zichtbaar of oproepbaar vanuit excel. Set wkb = GetObject("P:\bestand.csv") 'hier je pad + bestand Set sht = wkb.Sheets(1) '1 is eerste werkblad, of anders werkbladnaam invoeren sht.Range("A1:P60000").Sort Key1:=Range("H2"), Order1:=xlAscending, Header:= _ xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal With Sheets(1) .Columns(3).Insert .Range("C3") = "Collo No" .Range("C4").Resize(.Cells(Rows.Count, 2).End(xlUp).Row) = "=LOOKUP(C[-1],bestand.csv!R2C8:R60000C8,bestand.csv!R2C6:R60000C6)" On Error Resume Next Application.ScreenUpdating = False wkb.Close False 'anders blijft het wkb in VBA als geopend achter End With End Sub |
je bedoelt dat het niet lukt als het NIET fysiek door excel is geopend?quote:Op maandag 15 oktober 2012 09:20 schreef Frixel het volgende:
Ik kom er nog steeds niet uit met onderstaande macro.
Mijn probleem is dat de file .bestand niet fysiek geopend dient te worden en dat likt dan ook met de optie GetObject ("P:\bestand.csv")
Daardoor is het wel aktief en zichtbaar in VBA.
Dan moet het bestand dus gesorteerd worden (kolom H) en dat wil maar niet lukken als het bestand fysiek door excel geopend is.
Is hier nog een oplossing of aanpassing op de code voor te bedenken?
[ code verwijderd ]
klopt, Als het niet fysiek door Excel is geopend lukt het niet.quote:Op maandag 15 oktober 2012 10:00 schreef Holy_Goat het volgende:
[..]
je bedoelt dat het niet lukt als het NIET fysiek door excel is geopend?
Hoeveel kolommen gaat het om?quote:Op maandag 15 oktober 2012 10:16 schreef Frixel het volgende:
[..]
klopt, Als het niet fysiek door Excel is geopend lukt het niet.![]()
Het vervelende is dat het bestand groot en op netwerk staat dus duurt het (te)lang voordat het geopend, en bewerkt is.
Dan komt erbij dat de macro meerdere keren per dag gebruikt word en dan hele ritueel steeds herhaald moet worden. Of het moet kunnen zien dat het de eerste keer al gesorteerd is en dat die bewerking niet meer hoeft plaats te vinden!
Dan hoeft het daarna ook niet steeds meer geopend te worden.
Iedere dag is het een nieuw bestand dus 1 keer bewerken en dan nvoorlopig niets meer aan doen is ook geen optie.
Maar ja, dat gaat mijn pet te boven om zoiets te maken
Hmmja. dit gaat me dus te ver. daar moet ik bij afhaken...quote:Op maandag 15 oktober 2012 10:44 schreef Holy_Goat het volgende:
Je zou ook eens kunnen kijken naar het gebruik van ActiveX data objects
Ik zal eens zoeken op "quicksort " maar vrees dat ik er niet veel verder mee kom. Ik weet waar ik een macro kan maken en plakken in VBA maar dan houd het wel op.quote:Op maandag 15 oktober 2012 11:11 schreef Holy_Goat het volgende:
ik snap alleen niet echt waarom openen vanuit netwerk meer tijd zou kosten als je het echt IN EXCEL opent, dan wanneer je het niet echt opent.
Zou het voor jou ook te ver gaan om alles in te lezen in een 2D array en dan via een quicksort op de key (zoek maar op quicksort, best leuk) alles sorteren + terugstoppen in csv
dus op zich is openen geen probleem, als het maar niet 10x gedaan word? (om te sorteren)quote:Op maandag 15 oktober 2012 11:15 schreef Frixel het volgende:
[..]
Ik zal eens zoeken op "quicksort " maar vrees dat ik er niet veel verder mee kom. Ik weet waar ik een macro kan maken en plakken in VBA maar dan houd het wel op.
Dat openen vergt toch wel tijd iedere keer als de macro gebruikt word. (zeker 10x per dag) en dan doet ie steeds dat openen en sorteren.
klopt. 1x is genoeg als het gesaved word.quote:Op maandag 15 oktober 2012 11:20 schreef Holy_Goat het volgende:
[..]
dus op zich is openen geen probleem, als het maar niet 10x gedaan word? (om te sorteren)
Dan zou ik toch met mijn eerdere code de file echt in excel openen, dan de .sort gebruiken en opslaan.quote:Op maandag 15 oktober 2012 11:21 schreef Frixel het volgende:
[..]
klopt. 1x is genoeg als het gesaved word.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | dim welkedag as date open "locatie/issorted.txt" for input as #1 input #1, welkedag close #1 if welkedag == Date() then exit sub dim srcwbk As Workbook dim sht As Worksheet Set srcwbk = Workbooks.Open(filename:="je locatie hier", UpdateLinks:=False) srcwbk.sht.range(....).sort en dan die key ook srcwbk.sht.range(keyrange) Afsluiten kan dan weer met srcwbk.Close savechanges:=true Set srcwbk = Nothing open "locatie/issorted.txt" for output as #1 write #1, Date close #1 |
Echt heel erg bedankt voor de moeite hoor maar ik haak af.quote:Op maandag 15 oktober 2012 11:25 schreef Holy_Goat het volgende:
[..]
Dan zou ik toch met mijn eerdere code de file echt in excel openen, dan de .sort gebruiken en opslaan.
Verder kun je een bestandje ernaast maken bijvoorbeeld issorted.txt en daarin bv de datum van vandaag. Als de datum gisteren is, dan openen en sorteren en datum aanpassen in bestandje. Anders als datum al vandaag is, lekker niet openen en sorteren.
De csv wordt dagelijks gemaakt, toch?quote:Op maandag 15 oktober 2012 11:36 schreef Frixel het volgende:
[..]
Echt heel erg bedankt voor de moeite hoor maar ik haak af.
Dit gaat me te ver om te snappen!
Foutje van mij maar wekelijkse update en bestand word vervangen door bestaand bestand met dezelfde naam.quote:Op maandag 15 oktober 2012 13:43 schreef qu63 het volgende:
[..]
De csv wordt dagelijks gemaakt, toch?
Kan je niet een macro schrijven die eerst checkt of er al een .xlsx is (die dus netjes gesorteerd opgeslagen is), en zo niet deze aanmaakt? En dat deze dus netjes op volgorde gemaakt wordt.
En dan ook nog een check op datum, verwijder alle .xlsx-bestanden die niet van vandaag zijn ofzo?
Nou ja, dan kan mijn verhaal nog steeds, maar dan wekelijksquote:Op maandag 15 oktober 2012 13:47 schreef Frixel het volgende:
[..]
Foutje van mij maar wekelijkse update en bestand word vervangen door bestaand bestand met dezelfde naam.
Tja, makkelijker gezegt dan gedaan...quote:Op maandag 15 oktober 2012 13:50 schreef qu63 het volgende:
[..]
Nou ja, dan kan mijn verhaal nog steeds, maar dan wekelijks
Met je macro de bestandsdatum van je csv controleren, als die nieuwe is dan je xslx een nieuw xlsx maken, zo niet dan gebruik je de netjes gesorteerde xlsx
Volgens mij is de grote fout die je maakt, dat je je object niet aan een variabele koppelt. Je moet in mijn ogen iets in deze trant ondernemen:quote:Op maandag 15 oktober 2012 09:20 schreef Frixel het volgende:
Ik kom er nog steeds niet uit met onderstaande macro.
Mijn probleem is dat de file .bestand niet fysiek geopend dient te worden en dat likt dan ook met de optie GetObject ("P:\bestand.csv")
Daardoor is het wel aktief en zichtbaar in VBA.
Dan moet het bestand dus gesorteerd worden (kolom H) en dat wil maar niet lukken als het bestand fysiek door excel geopend is.
1 2 3 4 5 6 7 | Sub test() Dim xl As Excel.Application Dim a As String Set x1 = GetObject("P:\bestand.csv") a = x1.Sheets("Blad1").Range("A1").Value x1.Close End Sub |
Het verhaal is wat lastig te volgen en ook niet te controleren van afstand. Wellicht gebruik je dezelfde bestandsnamen waardoor excel naar het verkeerde geopende bestand blijft kijken. In mijn ogen dien je de registratie van je (bron)prijzen te veranderen. Je zou niet afhankelijk moeten zijn van de oude versie, er dient 1 volledige juiste versie te zijn. Dit kan je bijvoorbeeld realiseren door gebruik te maken van de datum wanneer je prijzen muteert en de datum van je verkoop.quote:
Nope, maar volgens mij kan je dat beter met Visio doen, die kan ook Excel als input verwerken.quote:Op donderdag 18 oktober 2012 16:47 schreef kostertim het volgende:
Iemand al eens geprobeerd om een organogram te maken vanuit een draaitabel? (Excel 2010)
Ja klopt inderdaad wel denk ik, hebben we alleen niet geïnstalleerd staan op onze werk pc's. Heb het besteld, bedankt voor je tip!quote:Op vrijdag 19 oktober 2012 22:21 schreef qu63 het volgende:
[..]
Nope, maar volgens mij kan je dat beter met Visio doen, die kan ook Excel als input verwerken.
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |