[VBA Word] extensie hernoemen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • kjiratsiekoedel
  • Registratie: Januari 2008
  • Laatst online: 11-09 00:14
Op mijn werk maakt het administratiesysteem (fidura) de tekstbestanden aan. Dit zijn gewoon Word (2003) bestanden, MAAR de bestandsextensie is *.dok in plaats van *.doc.
Dit levert binnen het bedrijf natuurlijk geen probleem op, maar soms wordt er een tekstbestand gemaild naar anderen en die kunnen het *.dok bestand niet openen.
Fidura zelf geeft ook niet erg zinnige info: LINK

De oplossing nu is om het *.dok bestand opnieuw te openen en vervolgens op te slaan als *.doc.

Dit lijkt een kleine handeling, maar het resultaat is gerommel in de map met ALLE documenten en per ongeluk wordt soms niet alleen de extensie, maar ook de naam van het bestand veranderd.

Ik ben aan de slag gegaan met een macro en heb tot nu toe dit kunnen vinden/maken:


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Sub emailsalsdoc()
    ActiveDocument.Save
    
    Dim strDoc As String
    Dim intPos As Integer
    strDocName = ActiveDocument.FullName
    intPos = InStrRev(strDocName, ".")
    strDocName = Left(strDocName, intPos - 1)
    strDocName = strDocName & ".doc"
    ActiveDocument.SaveAs FileName:=strDocName, _
    FileFormat:=wdFormatDocumentDefault
        
    ActiveDocument.SendMail
End Sub


Nu wordt het wordbestand als "*.dok.doc" als bijlage verzonden. Dit is dus wel door anderen te openen, maar helemaal tevreden ben ik nog niet. Ik wil dat het bestand namelijk *.doc gaat heten.

Ik zoek dus nog een stukje code om óf:
-de extensie eraf te halen (de code plakt er vervolgens ".doc" aan vast)
óf iets als:
-strDocName, ga naar het eind van deze string, wis nu de laatste 4 letters (nu wordt ".dok" gewist). De verdere code plakt er weer ".doc" aan vast.

Ik weet dit alleen niet in de juiste code neer te pennen. Zou iemand mij kunnen vertellen welke code ik hiervoor kan gebruiken?

Acties:
  • 0 Henk 'm!

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Ik weet dit alleen niet in de juiste code neer te pennen. Zou iemand mij kunnen vertellen welke code ik hiervoor kan gebruiken?
Heb je al [google=VBA word get document filename without extension].

http://www.ozgrid.com/forum/showthread.php?t=41349
http://www.xtremevbtalk.com/showthread.php?t=150688
zijn mogelijke oplossingen. Het is niet altijd zo dat je iets vindt wat precies is wat je zoekt... Kijk naar de aangedragen oplossingen en hoe dat in jouw voorbeeld in te passen is :)

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Acties:
  • 0 Henk 'm!

  • kjiratsiekoedel
  • Registratie: Januari 2008
  • Laatst online: 11-09 00:14
Geweldig. Replace was inderdaad een simpele, maar gouden vondst. De code is nu

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Sub emailsalsdoc()
    ActiveDocument.Save
    
    Dim strDocName As String
    Dim intPos As Integer
    strDocName = ActiveDocument.FullName
    intPos = InStrRev(strDocName, ".")
    strDocName = Left(strDocName, intPos - 1)
    strDocName = strDocName & ".doc"
    strDocName = Replace(strDocName, ".dok", "")
    ActiveDocument.SaveAs FileName:=strDocName, _
    FileFormat:=wdFormatDocumentDefault
        
    ActiveDocument.SendMail
End Sub


Ik maak inderdaad graag gebruik van wat anderen hebben gemaakt. Ik kwam alleen al niet uit de zoekwoorden waarop ik moest googlelen.
Erg leuk, zeker voor de eerste uurtjes VBA'en.

Acties:
  • 0 Henk 'm!

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Ik bedenk me ineens (maar dat mag je zelf uitproberen) dat je de extensie waarschijnlijk niet eens hoeft te specificeren (regel 9), omdat je het toch al als DocumentDefault opslaat (maar dat weet ik niet zeker :P)

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Acties:
  • 0 Henk 'm!

Verwijderd

alles wat dan boven de replace-opdracht staat wordt wel overbodig, en bemerk dat indien er nog eerder in de documentnaam of padnaam .dok voorkomt dit ook vervangen zal worden (de kans is klein maar niet onbestaand) ;)

Acties:
  • 0 Henk 'm!

  • kjiratsiekoedel
  • Registratie: Januari 2008
  • Laatst online: 11-09 00:14
Inderdaad stond er overbodige code in:

code:
1
2
3
4
5
6
7
8
9
10
11
12
Sub emailsalsdoc()

    ActiveDocument.Save
    
    Dim strDocName As String
    strDocName = ActiveDocument.FullName
    strDocName = Replace(strDocName, ".dok", "")
    ActiveDocument.SaveAs FileName:=strDocName, _
    FileFormat:=wdFormatDocumentDefault
    
    ActiveDocument.SendMail
End Sub


De documenten hebben allemaal dezelfde namen met een oplopend nummer (voorbeeldjes: AR0001, AT0044, OG0001, BLAN0654). ".dok" als naam gaat niet voorkomen (ja, 't kán wel :) )

Net wel mijn tijd lopen verdoen met 't maken van een bijpassend geautomatiseerd onderwerp voor het emailtje in Outlook (moet dan de gegevens uit de bladwijzers halen). Maar dat is een ander verhaal. Heb 't maar laten zitten omdat er op alle pc's dan via Extra - Verwijzingen de verwijzing naar de Outlook library moet worden aangevinkt. Heb ik geen zin in en zo vaak wordt er ook niet gemaild (juridisch, alles gaat per post met een handtekening)
Pagina: 1