Okay - Hang in there with me while I try to explain...
What I have so far:
When I Create a New Document via Commandbutton1 the ActiveDocument.Name is the string value on the .txt file + 1. (I'm generating design numbers that count up). Basically for every new document via the macro is a new design number naming that document.
When I Save Document (commandbutton2) - The New Document.Name should replace the string in the txt file with 1001. But this part isnt working.
And it should keep going up from there every time i create a new document and save it.
Private Sub commandButton1_Click()
Dim TextFile As IntegerDim FilePath As StringDim FileContent As String
On Error Resume Next FilePath = "C:\Users\chier\Desktop\Design Number" & ".txt"
TextFile = FreeFile
Open FilePath For Input As TextFile
FileContent = Input(LOF(TextFile), TextFile)
ActiveDocument.Name = FileContent
Dim doc1 As DocumentSet doc1 = CreateDocument() doc1.Name = FileContent + 1 End Sub
Private Sub commandButton2_Click()
'(This is where stuff starts action crazy i think). IT doesnt save properly i think.
Dim TextFile As IntegerDim FilePath As String
FilePath = "C:\Users\chier\Desktop\New Text Document" & ".txt"
Open FilePath For Output As TextFile ' Replaces Each Line in File'Open FilePath For Append As TextFile ' Adds additional Lines
On Error Resume NextPrint #TextFile, ActiveDocument.Name
ActiveDocument.SaveAs "C:\Users\chier\Desktop\" & ActiveDocument.Name & ".cdr"End Sub
Any adjustments will be helpful :)
Note: you'd have to create and save a .txt file first with a value inside and name the txt file "Design Number" & Also change the path to test.
I may not correctly understand exactly what you want to do.
Are you storing only one number? And then increasing that stored number by 1 every time a new document is created using this macro? Not saving a list of numbers in the file?
If it's just one number, then instead of storing it in a text file, have you considered having the macro store it in the Registry?
Right. I'm Only storing one number. That one number gets replaced every time the document is saved.
My goal is to auto generate a "design number" that customers reference. Trying to make it easy to track designs. I can just create a new document with the number i left off at.
I've stored a starting number on my text file. 1000.
Commandbutton1 creates a new doc and names my new doc. 1000 from my text file and adds 1 to it. Making my document name 1001.
Commandbutton2 is to save my design document in a folder and also replace 1000 with 1001 on my text file.
Then if I create a new document again via commandbutton1; it should name my new document 1002. If I save my document via the macro 1002 should replace 1001 on my text file. So on and so forth.
I dont now how to utilize the registry to do this.
Oh! I should note that the txt file will be shared between me and another person. So when I save my document they pick up from the last number I left off at and visa versa. The txt file will be saved on the server. I dont think the registry will work in this scenario?
The problem you describe in your script is, that you want to save a document name (including extension!!!) into a text file. Then you try to convert this filename into a number which will fail and result as 0.To avoid this, you could to the following:Store the ActiveDocument.Name in a string variable, search for the first dot and cut off the part starting at that position. Then you have again only your number and it will work.Since I'm very familiar with this kind of problem, I would suggest an absolutely different solution. This way even allows you to give your document a name in addition to the version number.In my example you even can start with a version 0 with 3 or more leading zeros:
Option ExplicitSub aaTestMe()SaveAsNext ActiveDocument, "C:\Temp\2018\Test\ForCDT_01_1000.Cdr"End SubSub SaveAsNext(ByRef iDoc As Document, ByVal pDefault As String)Dim CurPath As String, CurBody As String, CurNum As String, CurExt As String, CurName As StringDim CurFile As String, MaxFile As StringDim n1 As Integer, n2 As Integer, Ch1 As String, Ch2 As StringCurName = pDefaultn1 = InStrRev(CurName, ".")CurExt = Mid(CurName, n1)CurName = Left(CurName, n1 - 1)n1 = InStrRev(CurName, "\")CurPath = Left(CurName, n1)CurBody = Mid(CurName, n1 + 1)n1 = InStrRev(CurBody, "_")CurNum = Mid(CurBody, n1 + 1)CurBody = Left(CurBody, n1)'After splitting the default name into different needed parts we explore, what is already existentMaxFile = ""CurFile = Dir(CurPath + CurBody + "*" + CurExt)While CurFile <> "" If MaxFile = "" Then MaxFile = UCase(CurFile) Else If UCase(CurFile) > MaxFile Then MaxFile = UCase(CurFile) End If CurFile = DirWendIf MaxFile <> "" Then 'at least one file of that default name exists n1 = InStrRev(MaxFile, ".") MaxFile = Left(MaxFile, n1 - 1) ' cuts off the extention Ch1 = Mid(MaxFile, Len(CurBody) + 1) 'Cuts out the highest numeric part of the series n1 = Val(Ch1) + 1 'convert this to the next number Ch1 = Trim(Str(n1)) 'makes a string While Len(Ch1) < Len(CurNum) Ch1 = "0" + Ch1 Wend 'fills the leading zeros, so that you can start also with 0 CurNum = Ch1End IfCurName = CurPath + CurBody + CurNum + CurExtiDoc.SaveAs CurNameEnd Sub