![]() |
|
#1
|
|||
|
|||
![]() Quote:
I want to save the variable because I have a program that saves the document in the directory of that code when I close the document. I put the code that I have (I want the value that I enter through the inputbox, variable "oBM" to be taken from the bookmark) Code:
Sub SaveAsBM() Dim oBM As String Dim sPath As String oBM = InputBox("RECEPTE", "ENTRA EL CODI DEL PACIENT", "") sPath = "C:\Server\" & oBM & "\" CreateFolders sPath ActiveDocument.SaveAs sPath & "recepte" & Format(Now, "yyyymmdd hhnnss") & ".pdf" bFound = True End Sub Private Function CreateFolders(strPath As String) Dim strTempPath As String Dim lng_Path As Long Dim VPath As Variant Dim oFSO As Object Dim i As Integer Set oFSO = CreateObject("Scripting.FileSystemObject") VPath = Split(strPath, "\") If Left(strPath, 2) = "\\" Then strPath = "\\" & VPath(2) & "\" For lng_Path = 3 To UBound(VPath) strPath = strPath & VPath(lng_Path) & "\" If Not oFSO.FolderExists(strPath) Then MkDir strPath Next lng_Path Else strPath = VPath(0) & "\" For lng_Path = 1 To UBound(VPath) strPath = strPath & VPath(lng_Path) & "\" If Not oFSO.FolderExists(strPath) Then MkDir strPath Next lng_Path End If lbl_Exit: Set oFSO = Nothing Exit Function End Function |
#2
|
|||
|
|||
![]()
Okay, I think we're getting closer. I modified your SaveAsBM script as below, replacing the InputBox with code for getting the value of the bookmark named "CodiClient"
It tested fine for me, creating the folder named 11241, and saving the document as a PDF. But the PDF wouldn't open for me, but I trust it's working for you, or you know how to make that part work. Let me know if this is getting closer to your goal. Code:
Sub SaveAsBM() Dim oBM As String Dim sPath As String Dim bm As Bookmark Dim bmName As String Dim bmValue As String Dim rng_bm As Range Dim rng_expanded As Range Dim bmCheck As Boolean bmName = "CodiClient" sPath = "C:\Server" ' oBM = InputBox("RECEPTE", "ENTRA EL CODI DEL PACIENT", "") ' Store bookmark value for new folder name. For Each bm In ActiveDocument.Bookmarks If bm.Name = bmName Then Set rng_bm = bm.Range If rng_bm.Start = rng_bm.End Then Set rng_expanded = rng_bm rng_expanded.MoveEndWhile cset:="0123456789" bmValue = rng_expanded.Text sPath = (sPath & "\" & bmValue & "\") bmCheck = True End If End If Next bm If bmCheck = True Then Debug.Print ("Creating folder: " & sPath) CreateFolders sPath ActiveDocument.SaveAs sPath & "recepte" & Format(Now, "yyyymmdd hhnnss") & ".pdf" bFound = True Else Call MsgBox(prompt:=("Unable to find bookmark, " & bmName), buttons:=vbCritical) End If End Sub |
#3
|
|||
|
|||
![]()
Looping through the bookmarks collection is unnecessary when there is a built-in function to check that a bookmark exists.
So the simplified code should be: Code:
Sub SaveAsBM() Dim sPath As String: sPath = "C:\Server" Dim bmName As String: bmName = "CodiClient" Dim bm As Bookmark Dim bmValue As String Dim rng_bm As Range If ActiveDocument.Bookmarks.Exists(bmName) Then Set rng_bm = bm.Range If rng_bm.Start = rng_bm.End Then rng_bm.MoveEndWhile cset:="0123456789" bmValue = rng_bm.Text End If sPath = (sPath & "\" & bmValue & "\") Debug.Print ("Creating folder: " & sPath) CreateFolders sPath ActiveDocument.SaveAs sPath & "recepte" & Format(Now, "yyyymmdd hhnnss") & ".pdf" Else Call MsgBox(prompt:=("Unable to find bookmark, " & bmName), buttons:=vbCritical) End If End Sub |
#4
|
|||
|
|||
![]() Quote:
I get this error, do you know what it could be? "Object variable or With block variable not set" Code:
Sub SaveAsBM() Dim sPath As String: sPath = "C:\server" Dim bmName As String: bmName = "CodiPacient" Dim bm As Bookmark Dim bmValue As String Dim rng_bm As Range If ActiveDocument.Bookmarks.Exists(bmName) Then Set rng_bm = bm.Range If rng_bm.Start = rng_bm.End Then rng_bm.MoveEndWhile cset:="0123456789" bmValue = rng_bm.Text End If sPath = (sPath & "\" & bmValue & "\") Debug.Print ("Creating folder: " & sPath) CreateFolders sPath ActiveDocument.SaveAs sPath & "recepte" & Format(Now, "yyyymmdd hhnnss") & ".pdf" Else Call MsgBox(prompt:=("Unable to find bookmark, " & bmName), buttons:=vbCritical) End If End Sub Private Function CreateFolders(strPath As String) Dim strTempPath As String Dim lng_Path As Long Dim VPath As Variant Dim oFSO As Object Dim i As Integer Set oFSO = CreateObject("Scripting.FileSystemObject") VPath = Split(strPath, "\") If Left(strPath, 2) = "\\" Then strPath = "\\" & VPath(2) & "\" For lng_Path = 3 To UBound(VPath) strPath = strPath & VPath(lng_Path) & "\" If Not oFSO.FolderExists(strPath) Then MkDir strPath Next lng_Path Else strPath = VPath(0) & "\" For lng_Path = 1 To UBound(VPath) strPath = strPath & VPath(lng_Path) & "\" If Not oFSO.FolderExists(strPath) Then MkDir strPath Next lng_Path End If lbl_Exit: Set oFSO = Nothing Exit Function End Function |
#5
|
|||
|
|||
![]()
That error is from "bm.Range" not being valid. That was being used in my original code which was looping through all the bookmarks.
So now, you can use this instead. Notice the difference in how this is setting rng_bm. Code:
Sub SaveAsBM() Dim sPath As String: sPath = "C:\Server" Dim bmName As String: bmName = "CodiPacient" Dim bm As Bookmark Dim bmValue As String Dim rng_bm As Range If ActiveDocument.Bookmarks.Exists(bmName) Then Set rng_bm = ActiveDocument.Bookmarks(bmName).Range If rng_bm.Start = rng_bm.End Then rng_bm.MoveEndWhile cset:="0123456789" bmValue = rng_bm.Text End If sPath = (sPath & "\" & bmValue & "\") Debug.Print ("Creating folder: " & sPath) CreateFolders sPath ActiveDocument.SaveAs sPath & "recepte" & Format(Now, "yyyymmdd hhnnss") & ".pdf" Else Call MsgBox(prompt:=("Unable to find bookmark, " & bmName), buttons:=vbCritical) End If End Sub |
#6
|
|||
|
|||
![]() Quote:
|
![]() |
|
![]() |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
![]() |
Jennifer Murphy | Word | 4 | 02-20-2023 06:36 PM |
Changing Caption Position on Whole Document at once | Alexandarale | Word Tables | 1 | 11-15-2020 06:56 PM |
![]() |
gasparik | Word VBA | 1 | 05-11-2020 05:41 AM |
Starting a document, returning to last position | glennnall | Word | 0 | 10-08-2017 10:09 AM |
![]() |
tinfanide | Excel Programming | 3 | 02-27-2012 03:24 PM |