Je moet hier het volgende doenquote:Op donderdag 11 oktober 2012 11:17 schreef Frixel het volgende:
Ik heb nu onderstaande (na de alinea) ingebouwd maar dan sorteertt hij een bestand dat op het moment actief is en niet het genoemde bestand.
[ code verwijderd ]
1 2 3 4 5 6 7 8 | Dim wkb As Workbook, sht As Worksheet Set wkb = GetObject("P:\voorbeeld.xls") Set sht = wkb.Sheets(1) wkb.sht.Range("A1:B44").Sort Key1:=wkb.sht.Range("B2"), Order1:=xlAscending, Header:= _ xlYes, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal |
selecteren, wbk actief hebben of sheet actief hebben is niet nodig.quote:Op donderdag 11 oktober 2012 11:30 schreef Basp1 het volgende:
Wat gebeurt er als je in regel 5 ipv Set tst = Sheets("Sheet2").Select
iets van Set tst = wkb.Sheets("Sheet2").Select zou zetten?
iemand?quote:Op donderdag 11 oktober 2012 12:42 schreef Xperia het volgende:
Hallo allemaal.. ik heb een vraagje:
Ik heb een excel bestand die beveiligd moet worden d.m.v. een wachtwoord, maar tegelijkertijd mag iedereen het Excel bestand wel lezen echter mogen ze geen wijzgingen uitvoeren.
Dus zodra ze het bestand willen openen en wijzigen dienen ze een wachtwoord in te voeren, maar wanneer ze op de button "Alleen lezen" klikken wordt het bestand wel geopend maar dan alleen voor leesrechten.
Hoe stel ik dat in?
Versie: Excel 20120
Zie printscreen om het te verduideleken:
[ afbeelding ]
wat als je dat ding nou eerst echt eens opent als een excel instance. Dat doe ik ook namelijkquote:Op donderdag 11 oktober 2012 13:41 schreef Frixel het volgende:
Jammer, een foumelding op die regel wkb.sht.Range etc
melding is:
Object doesn`t support this property or method.
1 2 3 4 5 6 7 8 | dim srcwbk As Workbook dim sht As Worksheet Set srcwbk = Workbooks.Open(filename:=strlocation, 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 |
Bij werkmap beveiligen kun je aangeven wat er beveiligd moet worden.quote:
Hulp gevraagd van MS Excel professionalsquote:Op donderdag 11 oktober 2012 15:21 schreef Holy_Goat het volgende:
[..]
bij opslaan als > wachtwoord? of snap ik nu iets niet
Helemaal top Merciquote:Op donderdag 11 oktober 2012 15:21 schreef Holy_Goat het volgende:
[..]
bij opslaan als > wachtwoord? of snap ik nu iets niet
Volgende keer googelenquote:
quote:Open de betreffende file. Dan klik linksboven op bestand, dan op opslaan als.. In het nieuwe venster zie je rechts EXTRA staan. Klik hierop en selecteer dan "Algemene Opties". Voeg een wachtwoord in bij " wachtwoord voor openen". Klik op OK. Je moet het wachtwoord dan nog eens ingeven. Klik weer op OK. Geef de file een naam ( je mag dezelfde houden als die je had bij het openen) en klik op opslaan. Nu kan je het bestand alleen nog openen met dat wachtwoord.
SPOILEROm spoilers te kunnen lezen moet je zijn ingelogd. Je moet je daarvoor eerst gratis Registreren. Ook kun je spoilers niet lezen als je een ban hebt.
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.
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |