我的代碼有兩個問題。
第一個問題。當我第二次運行宏時,我無法讓它保存為oriTitle,并且對我是否想改變標題的問題做出否定的回答。它將只是空白。
第二個問題。我只能保存它2次。在那之后,我將得到運行錯誤。我希望至少能堅持10次。
誰能幫幫我?
有人能幫助我解決這兩個問題嗎?我不知道該怎么做。謝謝!
Private Sub CommandButton3_Click()
Const FilePath As String = "/SRVDCArbeitsordnerInternMeetingsEntwürfe"
Const OrigFileName As String = "20210_Besprechungsnotizen_00_"
Dim MyDate As String: MyDate = Format(Date, "YYYMMDD")
Dim 標題As String
Dim oriTitle As String: oriTitle = "Besprechungsnotizen"
Dim newTitle As String
Dim currentTitle As String
Dim User As String
Dim newUserAs String
Dim currentUserAs String
Dim Version As Integer
Dim newVersion As Integer
Dim currentVersion As Integer
If Split(ActiveDocument.Name, ".")(0) = OrigFileName Then
'檔案沒有被重新保存。
Else
'檔案之前已經被保存,所以從檔案名中提取資料。
Dim nameElements As Variant
nameElements = Split(Split(ActiveDocument.Name, "。")(0), "_")
用戶 = nameElements(UBound(nameElements))
版本 = nameElements(UBound(nameElements) - 1)
結束 If
If User = "" Then
User = InputBox("Wer erstellt? (姓名在Firmenkurzform)")
newTitle = MsgBox("Anderer Titel?", vbQuestion vbYesNo vbDefaultButton2, "Titel")
如果 newTitle = vbYes 然后
Title = InputBox("Wie soll der Titel sein?")
假設
標題 = oriTitle
結束 If
版本 = "0"/span>
Else
currentUser = InputBox("Wer bearbeitet? (姓名在Firmenkurzform)")
If currentUser = User Then
Else
User = User & "_" & currentUser
End If
newTitle = MsgBox("Neuer Titel?", vbQuestion vbYesNo vbDefaultButton2, "Titel")
如果 newTitle = vbYes 然后
Title = InputBox("Wie soll der neue Titel sein?" )
Else
結束 If
版本 = MsgBox("新版本?", vbQuestion vbYesNo vbDefaultButton2, "版本")
If Version = vbYes Then
newVersion = currentVersion 1
版本 = newVersion
Else
版本 = 當前版本
End If
End If
ActiveDocument.SaveAs2 FilePath & MyDate & "_" & Title & "_i_0" & Version & "_" & User
End Sub
uj5u.com熱心網友回復:
這里的問題是,你根本沒有把事情想清楚。你還簡單地使用了前一個答案中給你的代碼,而沒有首先確保你理解它。
永遠不要使用從互聯網上獲得的代碼,而不首先逐行研究它,并確保你完全理解代碼的每一部分的作用。您可以使用 Visual Basic 編輯器中的工具來幫助實作這一目標。將你的游標放在你不理解的術語上,然后按F2來顯示物件瀏覽器,或者按F1來訪問在線幫助。
我在代碼中加入了注釋來指出你的錯誤。
Private Sub CommandButton3_Click()
Const FilePath As String = "/SRVDCArbeitsordnerInternMeetingsEntwürfe"
Const OrigFileName As String = "20210910_Besprechungsnotizen_00_"
Dim MyDate As String: MyDate = Format(Date, "YYYMMDD")
Dim 標題As String
Dim oriTitle As String: oriTitle = "Besprechungsnotizen"
Dim newTitle As String
Dim currentTitle As String
Dim User As String
Dim newUserAs String
Dim currentUserAs String
Dim Version As Integer
Dim newVersion As Integer
Dim currentVersion As Integer
If Split(ActiveDocument.Name, ".")(0) = OrigFileName Then
'檔案沒有被重新保存。
Else
'檔案之前已經被保存,所以從檔案名中提取資料。
Dim nameElements As Variant
nameElements = Split(Split(ActiveDocument.Name, "。")(0), "_")
用戶 = nameElements(UBound(nameElements))
版本 = nameElements(UBound(nameElements) - 1)
結束 If
If User = "" Then
User = InputBox("Wer erstellt? (姓名在Firmenkurzform)")
'為什么你在這里使用Title,因為它是用來保存檔案的變數?
'你應該使用newTitle作為MsgBox的回傳值。
Title = MsgBox("Anderer Titel?", vbQuestion vbYesNo vbDefaultButton2, "Titel")
If Title = vbYes Then
'你應該在這里使用Titlke變數,而不是newTitle。
newTitle = InputBox("Wie soll der Titel sein?" )
'洗掉前兩行,接下來的兩行可以被洗掉。
標題 = newTitle
'這將newTitle設定為一個空白字串,因為你還沒有給currentTitle分配一個值。
newTitle = currentTitle
Else
標題 = oriTitle
'this sets oriTitle to a blank string as you haven't assigned a value to currentTitle yet?
oriTitle = currentTitle
結束 If
版本 = "0"/span>
Else
currentUser = InputBox("Wer bearbeitet? (姓名在Firmenkurzform)")
If currentUser = User Then
Else
'如果你使用下劃線來分隔用戶名,你將無法提取。
'版本號。
'你需要使用一個不同的字符來分隔名字,然后使用Split。
'函式將這些名字作為一個陣列回傳。
User = User & "_" & currentUser
End If
'見上述評論。
Title = MsgBox("Neuer Titel?" , vbQuestion vbYesNo vbDefaultButton2, "Titel")
If Title = vbYes Then
newTitle = InputBox("Wie soll der neue Titel sein?" /span>)
標題 = newTitle
newTitle = currentTitle
Else
Title = currentTitle
End If
上面的評論也適用于此。你應該在MsgBox中使用newVersion變數。
Version = MsgBox("新版本?", vbQuestion vbYesNo vbDefaultButton2, "版本")
If Version = vbYes Then
newVersion = currentVersion 1
版本 = newVersion
Else
'你還沒有為currentVersion賦值,所以它將把Version設定為0。
Version = currentVersion
End If
End If
ActiveDocument.SaveAs2 FilePath & MyDate & "_" & Title & "_i_0" & Version & "_" & User
End Sub
uj5u.com熱心網友回復:
由于另一個帖子和Timothy的主要幫助,我能夠完成我的代碼。這是我得到的東西,以防將來有人嘗試類似的東西。 我甚至添加了保存為PDF的選項,并決定這是否應該是一個新版本。 這里保存為word:
Private Sub CommandButton3_Click()
Const FilePath As String = "/SRVDCArbeitsordnerInternMeetingsEntwürfe"
Const OrigFileName As String = "20210_Besprechungsnotizen_00_"
Dim 標題 As String: 標題 = "Besprechungsnotizen"
Dim newTitle As String
Dim MyDate As String: MyDate = Format(Date, "YYYMMDD")
Dim User As String
Dim VersionAs String
If Split(ActiveDocument.Name, ".")(0) = OrigFileName Then
'檔案沒有被重新保存。
Else
'檔案之前已經被保存,所以從檔案名中提取資料。
Dim nameElements As Variant
nameElements = Split(Split(ActiveDocument.Name, "。")(0), "_")
用戶 = nameElements(UBound(nameElements))
版本 = nameElements(UBound(nameElements) - 1)
標題 = nameElements(UBound(nameElements) - 3)
結束 If
If User = "" Then
User = InputBox("Wer erstellt? (姓名在Firmenkurzform)")
newTitle = MsgBox("Anderer Titel?", vbQuestion vbYesNo vbDefaultButton2, "Titel")
如果 newTitle = vbYes 然后
Title = InputBox("Wie soll der Titel sein?")
Else
結束 If
版本 = "0"/span>
Else
Dim currentUser AsString
currentUser = InputBox("Wer bearbeitet? (姓名在Firmenkurzform)")
If currentUser = User Then
Else
用戶 = 用戶 & currentUser
End If
Version = Format$(Version 1, "0"/span>)
End If
ActiveDocument.SaveAs2 FilePath & MyDate & "_"/span> & Title & "_i_0"/span> & Version & "_"/span> & User
End Sub
這里是PDF部分
Private Sub CommandButton1_Click()
Const FilePath As String = "/SRVDCArbeitsordnerInternMeetingsFinale Versionen"
Const OrigFileName As String = "20210910_Besprechungsnotizen_00_"
Dim 標題 As String: 標題 = "Besprechungsnotizen"
Dim newTitle As String
Dim MyDate As String: MyDate = Format(Date, "YYYMMDD")
Dim User As String
Dim VersionAs String
If Split(ActiveDocument.Name, ".")(0) = OrigFileName Then
'檔案沒有被重新保存。
Else
'檔案之前已經被保存,所以從檔案名中提取資料。
Dim nameElements As Variant
nameElements = Split(Split(ActiveDocument.Name, "。")(0), "_")
用戶 = nameElements(UBound(nameElements))
版本 = nameElements(UBound(nameElements) - 1)
標題 = nameElements(UBound(nameElements) - 3)
結束 If
If User = "" Then
User = InputBox("Wer erstellt? (姓名在Firmenkurzform)")
newTitle = MsgBox("Anderer Titel?", vbQuestion vbYesNo vbDefaultButton2, "Titel")
如果 newTitle = vbYes 然后
Title = InputBox("Wie soll der Titel sein?")
Else
結束 If
版本 = "0"/span>
Else
newVersion = MsgBox("Neue Version?", vbQuestion vbYesNo vbDefaultButton2, "Neue Version")
If newVersion = vbYes Then
Dim currentUser As String[/span
currentUser = InputBox("Wer bearbeitet? (姓名在Firmenkurzform)")
如果 currentUser = User Then
Else
用戶 = 用戶 & currentUser
End If
Version = Format$(Version 1)
Else
版本 = Format$(Version)
End If
End If
ActiveDocument.ExportAsFixedFormat OutputFileName:=FilePath & _
MyDate & "_" & Title & "_i_0" & Version & "_" & User & " .pdf", _
輸出格式:=wdExportFormatPDF, _
OpenAfterExport:=False, _
OptimizeFor:=wdExportOptimizeForPrint, _
范圍:=wdExportAllDocument, _
IncludeDocProps:=True, _
CreateBookmarks:=wdExportCreateWordBookmarks, _
BitmapMissingFonts:=True.
End Sub
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/314493.html
標籤:
上一篇:矢量上的ifelse函式
