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 topquote: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.
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.
document sluiten en weer opnieuw openen.quote:Op dinsdag 23 oktober 2012 13:15 schreef SummerBreeze het volgende:
Topic niet doorgelezen, excuus als het antwoord al ergens staat.
Excel 2007. Ik heb een koptekst toegevoegd en daarna wil ik mijn spreadsheet weer zien zoals gebruikelijk. Ik druk dus op de knop 'normaal' onder het tabblad 'Beeld'. Helaas krijg ik dan de printmargelijnen te zien. Aangezien ik de huidige sheet wil gaan gebruiken in een presentatie wil ik die stippellijn niet hebben. Hoe krijg ik deze weg?
Dat ik daar nou niet aan gedacht heb...quote:Op dinsdag 23 oktober 2012 13:25 schreef Deetch het volgende:
[..]
document sluiten en weer opnieuw openen.
graag gedaanquote:Op dinsdag 23 oktober 2012 13:27 schreef SummerBreeze het volgende:
[..]
Dat ik daar nou niet aan gedacht heb...Heel erg stom.
Dank je wel in ieder geval
Dat zou moeten kunnen werken inderdaad. Helaas maak ik het op een 2007-versie. De doel-pc draait Office 2012 als t goed is..quote:Op donderdag 25 oktober 2012 14:39 schreef Deetch het volgende:
Misschien met deze add-in: http://www.microsoft.com/en-us/download/details.aspx?id=15011
Ik ga wel even spelen, thanksquote:Op donderdag 25 oktober 2012 18:12 schreef ralfie het volgende:
Je zou eigenlijk zelf een algoritme moeten schrijven, bijvoorbeeld door gebruik te maken van een zogenaamde metafoon index
http://en.wikipedia.org/wiki/Metaphone
Qua werk valt het wel mee, en je hoeft niet te neuken met *tjes etc. Even een functie schrijven in vba en je bent klaar. In de wikipedia referenties staan nog wat bronnen genoemd waaronder een implementatie in vba. Ik zou zeggen, probeer het eens. Je zult wel de metafoon bibliotheek moeten veranderen naar het nederlands, wellicht dat er een nederlandse versie op het internet rondwaart.
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |