Help!

PC-Problemen?
De vrijwilligers van Oplossing.be zoeken gratis met u mee!

Hulp bij posten

Recente topics

Auteur Topic: Opslaan in map met string  (gelezen 11998 keer)

0 leden en 1 gast bekijken dit topic.

Offline hierenik

  • Lid
  • *
  • Berichten: 27
  • Oplossing.be
Opslaan in map met string
« Gepost op: 15 december 2014, 14:25:14 »
Ik vroeg mij af of het mogelijk is om aan de hand van een macro een werkblad als pdf te exporteren naar een map met een bepaalde string erin?
Ik heb bijvoorbeeld het dossiernummer in het werkblad staan; dat is: 0001193
Ik wil dan automatisch laten exporteren naar pdf in de map w:\0001193 DOSSIERNAAM\berekeningen\bestandsnaam.pdf
Deze map bestaat al en dient niet aangemaakt te worden.

Aan de hand van
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        "W:\PROJECT\0001193 "****"\BEREKENINGEN\" bestandsnaam ".pdf"
Of zoiets??
 ???

Alvast bedankt!
Gelieve uw systeemgegevens in te vullen. Klik HIER voor meer informatie.

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.280
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: Opslaan in map met string
« Reactie #1 Gepost op: 15 december 2014, 16:26:02 »
Heb je je eigen voorstel al 'ns uitgeprobeerd??? Ziet er toch niet gek uit?
______________________________

Groet, Leo

Offline hierenik

  • Lid
  • *
  • Berichten: 27
  • Oplossing.be
Re: Opslaan in map met string
« Reactie #2 Gepost op: 15 december 2014, 16:49:41 »
ja ik probeerde het, maar lukt niet,
het is nu niet dat ik er veel van ken hoor...

dit is mijn code:

Sub PDF()
'
' PDF Macro
'

'
Dim naam As String
Dim naam2 As String
Dim naam3 As String


 
naam = ActiveSheet.Range("M6").Value '
naam2 = ActiveSheet.Range("M7").Value '
naam3 = ActiveSheet.Range("O7").Value '

If Dir("W:\PROJECT\0001193" * "\BEREKENINGEN\" & naam & "-" & naam2 & "_" & naam3 & ".pdf") <> "" Then
   MsgBox "Het bestand: " & naam & "-" & naam2 & "_" & naam3 & ".pdf bestaat reeds!"   '
       Exit Sub
     Else
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        "W:\PROJECT\0001193" * "\BEREKENINGEN\" & naam & "-" & naam2 & "_" & naam3 & ".pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
        :=False, OpenAfterPublish:=True
End If
End Sub



Waarbij naam en naam2 en naam3, respectievelijk dossiernummer, subnummer en index is... Formaat van bestandsnaam ziet er alsvolgt uit: 0001193-0020_A.pdf
Ik kan ergens wel een " of een spatie of dergelijk te veel of te weinig hebben???
Gelieve uw systeemgegevens in te vullen. Klik HIER voor meer informatie.

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.280
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: Opslaan in map met string
« Reactie #3 Gepost op: 15 december 2014, 17:36:34 »
En als je je code met F8 in de visual baisc editor stap voor stap doorloopt. Waar blijft je dan steken? Of wat zijn de waardes van de variabelen? En bevatten die variabelen geen 'verboden' tekens?
______________________________

Groet, Leo

Offline hierenik

  • Lid
  • *
  • Berichten: 27
  • Oplossing.be
Re: Opslaan in map met string
« Reactie #4 Gepost op: 16 december 2014, 08:44:18 »
Vooraleerst bedankt voor uw aandacht!

Fout komt op bij regel:

If Dir("W:\PROJECT\&naam& " * "\" & naam & "-" & naam2 & "_" & naam3 & ".pdf") <> "" Then

Fout 13 tijdens uitvoering :
Typen komen niet met elkaar overeen

De waardes van naam, naam2 en naam3 zijn respectievelijk bvb 0001193, 0020 en A (dus geen 'verboden' tekens)

Deze code werkt wel voor welbepaalde opgegeven map:

Sub PDF()
'
' PDF Macro
'

'
Dim naam As String
Dim naam2 As String
Dim naam3 As String


 
naam = ActiveSheet.Range("M6").Value '
naam2 = ActiveSheet.Range("M7").Value '
naam3 = ActiveSheet.Range("O7").Value '

If Dir("W:\PROJECT\0001193 GANTOIS-MAKEN SCHOEPEN\BEREKENINGEN\" & naam & "-" & naam2 & "_" & naam3 & ".pdf") <> "" Then
   MsgBox "Het bestand: " & naam & "-" & naam2 & "_" & naam3 & ".pdf bestaat reeds!"   '
       Exit Sub
     Else
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        "W:\PROJECT\0001193 GANTOIS-MAKEN SCHOEPEN\BEREKENINGEN\" & naam & "-" & naam2 & "_" & naam3 & ".pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
        :=False, OpenAfterPublish:=True
End If
End Sub

Maar aangezien niet alles in deze map dient te komen ...  ;D

Gelieve uw systeemgegevens in te vullen. Klik HIER voor meer informatie.

Offline pitufo

  • Ambassadeur
  • *****
  • Berichten: 1.343
  • Geslacht: Man
Re: Opslaan in map met string
« Reactie #5 Gepost op: 16 december 2014, 12:34:13 »
Als je
If Dir("W:\PROJECT\&naam
vervangt door
If Dir("W:\PROJECT\" & naam
kom je dan niet wat verder ?

Mvg,
pitufo
"De computer doet wel degelijk wat je hem vraagt,
 maar NIET wat je DENKT dat je hem vraagt"

Offline hierenik

  • Lid
  • *
  • Berichten: 27
  • Oplossing.be
Re: Opslaan in map met string
« Reactie #6 Gepost op: 16 december 2014, 15:19:04 »
Nee, ook niet
Dan krijg ik op de punt voor pdf een foutmelding

Compileerfout
Verwacht: lijstscheidingsteken of )

Ook een syntaxisfout

Gelieve uw systeemgegevens in te vullen. Klik HIER voor meer informatie.

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.280
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: Opslaan in map met string
« Reactie #7 Gepost op: 16 december 2014, 15:27:28 »
Probeer dit maar 'ns...
if len(dir(het hele pad)) > 0 then msgbox "bestand bestaat"

Vermijd uiteraard het gebruik van jokertekens. Een pad moet compleet én juist zijn.
______________________________

Groet, Leo

Offline pitufo

  • Ambassadeur
  • *****
  • Berichten: 1.343
  • Geslacht: Man
Re: Opslaan in map met string
« Reactie #8 Gepost op: 16 december 2014, 18:53:00 »
Hallo,

Mijn eerste antwoord is er tijdens mijn middagpauze gekomen, dus in de rapte gereageerd op de eerste fout die ik zag staan...

Een * is een nuttig teken in een dir-commando  0:-) maar NIET in jouw geval, want je zoekt één specifiek bestand.
En om een bestand op te slaan is een * helemaal uit den boze !

Dus bv. (kan ook op jouw manier maar dit is misschien leesbaarder) :

bestand = naam  & "-" & naam2 & "_" & naam3 & ".pdf"
locatie="W:\PROJECT\" & naam & "\BEREKENINGEN\"
if len(dir(locatie & bestand)) > 0 then
   msgbox "bestand " & bestand & " bestaat"
   exit sub
else
   ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= locatie & bestand, enz.
endif
"De computer doet wel degelijk wat je hem vraagt,
 maar NIET wat je DENKT dat je hem vraagt"

Offline hierenik

  • Lid
  • *
  • Berichten: 27
  • Oplossing.be
Re: Opslaan in map met string
« Reactie #9 Gepost op: 17 december 2014, 10:20:57 »
Dank jullie wel om te helpen denken, RedHead en Pitufo.  :)
Ik begin er ook hééél stilletjes vat op te krijgen ;)

Dus geen sterretjes, dus niet mogelijk om op te slaan in map
w:\PROJECT\0001193 PROJECTNAAM\BEREKENINGEN\

Tenzij ik "projectnaam" ook opneem in het werkblad... want het gaat hem niet over map
w:\PROJECT\0001193\BEREKENINGEN
(dat is wat locatie="W:\PROJECT\" & naam & "\BEREKENINGEN\" zou geven)

Juist? Of mis ik iets  :-[ ???
Gelieve uw systeemgegevens in te vullen. Klik HIER voor meer informatie.

Offline pitufo

  • Ambassadeur
  • *****
  • Berichten: 1.343
  • Geslacht: Man
Re: Opslaan in map met string
« Reactie #10 Gepost op: 17 december 2014, 11:11:12 »
Hallo,

Je had al aangegeven dat je bestanden in diverse maps moesten opgeslagen worden.
Tja, als je dat wil bereiken zal Excel toch eerst moeten weten in welke. En vermits je niet elke keer je macro wil aanpassen wordt dat een variabel gegeven. Uit je eerste post kon worden afgeleid dat je die waarde op je werkblad had staan.
Dan zou er geen probleem mogen zijn, want je kan daar echt alle kanten mee uit.
Als het niet wil lukken, zet hier dan nog eens duidelijk de bedoeling neer.
"De computer doet wel degelijk wat je hem vraagt,
 maar NIET wat je DENKT dat je hem vraagt"

Offline hierenik

  • Lid
  • *
  • Berichten: 27
  • Oplossing.be
Re: Opslaan in map met string
« Reactie #11 Gepost op: 17 december 2014, 11:39:20 »
Wel ik heb een aantal mappen als bvb:

W:\PROJECTEN\11111 ABC DFG-G\BEREKENINGEN\
W:\PROJECTEN\22222 DEF RE-GJ124 9M+\BEREKENINGEN\
W:\PROJECTEN\33333 GHIJKLTFFHJ\BEREKENINGEN\

Nu had ik het idee om met die macro het werkblad op te slaan als pdf in de goeie map, wanneer er enkel bvb 22222 op het werkblad staat.
(dus in W:\PROJECTEN\22222 DEF RE-GJ124 9M+\BEREKENINGEN\  ;))

(Het is iets te omslachtig om ook DEF RE-GJ124 9M+ op te nemen in het werkblad, en vergroot ook de kans op fouten en dus extra mappen, ...)

Hopelijk verduidelijkt dit het probleem
Gelieve uw systeemgegevens in te vullen. Klik HIER voor meer informatie.

Offline pitufo

  • Ambassadeur
  • *****
  • Berichten: 1.343
  • Geslacht: Man
Re: Opslaan in map met string
« Reactie #12 Gepost op: 17 december 2014, 12:29:28 »
't Is maar wat je een probleem noemt... mogelijkheden te over namelijk  ;)
 
Hier alvast eentje (te implementeren in code uit mijn vorige post) :
select case ActiveSheet.Range("....").Value (cel waar bv. 11111 staat)
   case "11111" : submap="11111 ABC DFG-G"
   case "22222" : submap="22222 DEF RE-GJ124 9M+"
   enz.....
   case else
end select
if submap="" then
   msgbox "Geen geldige submap"
   exit sub
else
   locatie ="W:\PROJECTEN\" & submap & "\BEREKENINGEN\"
endif

 
 
 
"De computer doet wel degelijk wat je hem vraagt,
 maar NIET wat je DENKT dat je hem vraagt"

Offline hierenik

  • Lid
  • *
  • Berichten: 27
  • Oplossing.be
Re: Opslaan in map met string
« Reactie #13 Gepost op: 17 december 2014, 13:01:48 »
Hm, ja ik begrijp het maar...
dit dien ik dan te doen voor de 1602 mappen die er momenteel zijn? En er komen er dagelijks bij...

Gelieve uw systeemgegevens in te vullen. Klik HIER voor meer informatie.

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.280
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: Opslaan in map met string
« Reactie #14 Gepost op: 17 december 2014, 14:02:23 »
Tja, het is logisch dat je met een jokerteken nóóit ergens een bestand kan plaatsen. Want HOE zou Windows moeten weten waar het bestand geplaatst moet worden?
______________________________

Groet, Leo

 


www.combell.com