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

macro zoekfunctie

Status
Niet open voor verdere reacties.

sharda002

Gebruiker
Lid geworden
21 mei 2010
Berichten
66
hallo,

hoe maak je de macro die een map zoekt maar alleen kijkt naar het eerste gedeelte?

map naam is: " 201252 dit is een test map"

de macro moet dan zoeken naar 201252 en daar het bestand in plaatsen

groet

john
 
Code:
smap = "F:\data\projecten\"
Ssubmap = Dir(smap & Target.Value & "*", 16)

Niels
 
niels, waar staat die "16" voor in de macro, het overige snap ik wel, was achteraf ook simpel.
 
Geeft het type wat te zoeken aan.
Voor uitgebreide uitleg selecteer het woord dir in de macro in VBA en toets F1


Niels
 
nu doet die het niet, had ik te vroeg gejuigd

hoe implementeer je dit nu in deze macro?

--------------------------------------
dirr = "E:\map hse\"

If Dir(dirr, vbDirectory) = "" Then
MkDir dirr
End If


WBnaam = dirr & Sheets("faktuur").Range("a8")
ActiveWorkbook.SaveAs Filename:=WBnaam
ActiveWorkbook.Save
 
Ik weet niet wat dit met je eerste vraag te maken heeft, maar controleren of een map bestaat doe je zo

Code:
With CreateObject("Scripting.FileSystemObject")
    dirr = "E:\map hse\"
    If Not .FolderExists(dirr) Then .CreateFolder dirr
End With


PS graag de codetags (#) gebruiken

Niels
 
wellicht hheb ik het niet duidelijk uitgelegd, Dit is de originele macro welke ik nu gebruik:(die andere dacht ik goed aangepast te hebben)

-------------------------------------------------
Dirr = Sheets("faktuur").Range("a4") & "\"

If Dir(Dirr, vbDirectory) = "" Then
MkDir Dirr
End If
WBnaam = Dirr & Sheets("faktuur").Range("a8")
ActiveWorkbook.SaveAs Filename:=WBnaam
ActiveWorkbook.Save
------------------------------------------------------------------------
NB: A4 is een cel waarin het pad staat
A8 is een cel waarin de bestandnaam staat


Hier maakt de macro de naam van het blad en zet deze vervolgens in een map, bestaat de map niet maakt deze een nieuwe map aan
ik wil voordat deze het bestand opslaat in de betreffende map eerst dat hij kijkt of er al een map bestaat welke het eerste gedeelte van de mapnaam heeft.

voorbeeld mapnaam = 201225 pietje bestaat al,

Als ik deze macro gebruik maakt hij nu deze map naam aan en slaat deze op: 201225 kees

Ik wil dus dat de macro het blad opslaat in de map 201225 pietje


hoop dat dit zo duidelijk is

wat bedoel je met codetag(#) gebruiken??

groet

john
 
Met codetags bedoel ik dat je code in een apart kader komt te staan, zoals mijn code.
Boven in het scherm 2de rij rechts staat een icoontje (#). selecteer je code en druk hierop.
Helaas staat dit erbij snel reageren niet bij.

Waar staat een gedeelte van de map naam?
Ik ga uit van A4

Code:
With CreateObject("Scripting.FileSystemObject")
    smap = "E:\map hse\"
    smap = Dir(smap & sheets("factuur").range("A4").Value & "*", 16)
    If Not .FolderExists(smap) Then .CreateFolder smap

End With
WBnaam = Smap & Sheets("faktuur").Range("a8")
ActiveWorkbook.SaveAs Filename:=WBnaam
ActiveWorkbook.Save


Niels
 
Laatst bewerkt:
sorry had de verkeerde namen van de sheet, ben er nu bijna uit
krijg nog 1 foutmelding
hij zegt dat create folder sMap een "ongeldig argument is" komt dit doordat de map nog neit bestaat?

Code:
CreateFolder sMap

Code:
Sub opslaan()


With CreateObject("Scripting.FileSystemObject")
    sMap = "E:\map hse\"
    sMap = Dir(sMap & Sheets("faktuur").Range("A4").Value & "*", 16)
    If Not .FolderExists(sMap) Then .CreateFolder sMap

End With
WBnaam = sMap & Sheets("faktuur").Range("a8")
ActiveWorkbook.SaveAs Filename:=WBnaam
ActiveWorkbook.Save
End Sub
 
Foutmelding ligt aan mij, moest beter lezen.

Code:
Sub opslaan()

smap = "E:\map hse\"
smap1 = Dir(smap & Sheets("faktuur").Range("A4").Value & "*", 16)
If smap1 <> "" Then
smap = smap & smap1 & "\"
Else
With CreateObject("Scripting.FileSystemObject")
smap = smap & Sheets("faktuur").Range("A4").Value & "\"
.CreateFolder smap

End With
End If
WBnaam = smap & Sheets("faktuur").Range("a8")
ActiveWorkbook.SaveAs Filename:=WBnaam
ActiveWorkbook.Save
End Sub

Niels
 
Niels bedankt zover, de macro werkt maar deze maakt nog steeds telkens een nieuwe map aan.

cel a4 is een verwijzing; bijv. 1234 project

het is de bedoeling dat de macro eerst zoekt naar een submap die begint met 1234 (ongeacht wat er achter de 1234 staat) en dan vervolgens het bestand daar opslaat.


Als die submap niet bestaat moet deze een nieuwe map aanmaken

Groet john
 
Sorry maar volgens mij doet de macro precies wat je vraagt.
Je vult in A4 bv "1234" in en dan wordt het bestand weggeschreven in bv "map 1234 dit is een test".
Bestaat er geen map die begint met 1234 wordt de map 1234 aangemaakt.
Je komt nu pas met de opmerking dat er "1234 project" in de cel staat en dat er op 1234 gezocht moet worden.


Als het altijd om 6 tekens gaat.
Code:
smap1 = Dir(smap & Left(Sheets("faktuur").Range("A4").Value, 6) & "*", 16)

Niels
 
Laatst bewerkt:
sorry Niels dat wist ik niet, de mappen zijn allen opgebouw uit: 10-080 en tekst, 10-081 en tekst enz.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan