![]() |
|
#1
|
||||
|
||||
![]()
Try:
Code:
Option Explicit Dim FSO As Object, oFolder As Object, StrFolds As String, StrFldr As String, wdDoc As Document Sub Main() Application.ScreenUpdating = False ActiveWindow.View.ShowFieldCodes = True Dim SubFldrs As Variant, SubFldr As Variant, i As Long Set wdDoc = ActiveDocument StrFldr = wdDoc.Path: StrFolds = vbCr & StrFldr If FSO Is Nothing Then Set FSO = CreateObject("Scripting.FileSystemObject") End If 'Get the sub-folder structure Set SubFldrs = FSO.GetFolder(StrFldr).SubFolders For Each SubFldr In SubFldrs RecurseWriteFolderName (SubFldr) Next 'Process the documents in each folder For i = 1 To UBound(Split(StrFolds, vbCr)) Call UpdateDocList(CStr(Split(StrFolds, vbCr)(i))) Next With wdDoc.Range.Find .ClearFormatting .Replacement.ClearFormatting .Text = "[^13]{2,}" .Replacement.Text = "^p" .Forward = True .Wrap = wdFindContinue .Format = False .MatchWildcards = True .Execute Replace:=wdReplaceAll End With Set wdDoc = Nothing ActiveWindow.View.ShowFieldCodes = False Application.ScreenUpdating = True End Sub Sub UpdateDocList(strFolder As String) Dim strFile As String, strRelPath As String, Fld As Field, Rng As Range, h As Long strRelPath = Replace(strFolder & "\", StrFldr & "\", "") h = UBound(Split(strRelPath & "\", "\")) With wdDoc.Range If h = 1 Then .InsertAfter vbCr & "This Folder" & vbCr Else .InsertAfter vbCr & strRelPath & vbCr End If .Paragraphs.Last.Previous.Style = "Heading " & h End With strFile = Dir(strFolder & "\*.doc", vbNormal) While strFile <> "" If strFolder & "\" & strFile <> wdDoc.FullName Then With wdDoc.Range .InsertAfter vbCr Set Rng = .Hyperlinks.Add(.Characters.Last, "/../" & strRelPath & strFile, , , Split(strFile, ".doc")(0)).Range With Rng .MoveStartUntil "/", wdForward .Collapse wdCollapseStart .Fields.Add Range:=.Duplicate, Type:=wdFieldEmpty, Text:="FILENAME \p", PreserveFormatting:=False End With End With End If strFile = Dir() Wend End Sub Function GetFolder() As String Dim oFolder As Object GetFolder = "" Set oFolder = CreateObject("Shell.Application").BrowseForFolder(0, "Choose a folder", 0) If (Not oFolder Is Nothing) Then GetFolder = oFolder.Items.Item.Path Set oFolder = Nothing End Function Sub RecurseWriteFolderName(aFolder) Dim SubFolders As Variant, SubFolder As Variant Set SubFolders = FSO.GetFolder(aFolder).SubFolders StrFolds = StrFolds & vbCr & CStr(aFolder) On Error Resume Next For Each SubFolder In SubFolders RecurseWriteFolderName (SubFolder) Next End Sub
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
#2
|
|||
|
|||
![]()
Thanks so much for this, it’s massively appreciated. I have had a quick play and it looks pretty much spot on. One issue is that each header shows the full pile path not just that header.
I’ll have a proper sit down with it over the weekend! Thanks again! |
#3
|
||||
|
||||
![]() Quote:
.InsertAfter vbCr & strRelPath & vbCr to: .InsertAfter vbCr & Split(strRelPath, "")(h - 2) & vbCr
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
#4
|
|||
|
|||
![]()
Thanks again Paul. What you have provided is great and is so close to what I need to achieve. I appreciate that your not here just to provide the script for me and I'm trying to learn VBA but it's quite a learning curve to achieve this. I will try and resolve this myself but if your generosity extends to look at this I've added a onedrive link below to a dummy folder structure. This includes a word doc which includes the heading structure etc I need to end up with, It might make more sense than how I have described it!
Microsoft services Like I said if you cannot assist, I completely understand. Thanks again. Last edited by neilwhite; 04-20-2020 at 03:29 AM. Reason: I cant spell! |
![]() |
Tags |
batch processing, hyperlinking |
|
![]() |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
Batch Comparing Multiple Word Files | scienceguy | Word VBA | 2 | 10-27-2021 07:43 AM |
![]() |
Dave T | Windows | 2 | 03-01-2016 08:07 PM |
Remove Compatibility Mode on DOCX files (batch) | w64bit | Word | 17 | 02-01-2015 06:02 AM |
![]() |
stanleyhuang | Word | 3 | 09-11-2014 12:51 AM |
Hyperlinking files on a mapped network drive | howler2345 | Outlook | 0 | 12-21-2011 08:54 AM |