我想要得到的是一个弹出窗口,上面写着扫描作业编号,该编号在扫描时消失,然后另一个弹出窗口上显示扫描的测试材料也消失了
然后,这两个数据都成为文件名,并且在两个数据之间带有下划线
EG JN1106846_F114-CHT-00343
另一个弹出窗口,显示数据供用户确认是否正确。 如果是,则保存到预设路径,如果没有则返回到开头
我几乎可以正常工作了,我在努力挣扎的是
变量文件名并在其中添加下划线(我想也许可以从消息框中复制文本,但是我似乎做不到)
输入正确数量的字符后接受扫描数据
并处理具有相同名称的多个文件。我想给它们加上时间戳,但冒号阻止它保存
有什么建议吗?
Sub tt()
将inputData设置为字符串
Application.DisplayAlerts = False
inputData = InputBox("Scan Job Number:", "Scan it you slag!")
If inputData <> "" Then
scan = inputData
End If
inputData = InputBox("Scan part number:", "Scan it you slag!")
If inputData <> "" Then
partnum = inputData
End If
Ret_Type = MsgBox(scan & "_" & partnum & "_" & Now(), vbYesNo, "Filename Correct?")
Select Case Ret_Type
Case 6
ActiveWorkbook.SaveAs ("M:\Quality\Public\ManufacturingHistory\RoughnessTestingResults\VarableFilename " & Format(Now(), "DD-MMM-YY") & ".xlsx")
Case 7
Call tt
End Select
结束子
答案 0 :(得分:0)
首先,应在创建文件后立即将文件名存储在变量中,如下所示:
Dim filename As String = scan & "_" & partnum & "_" & Format(Now(), "DD-MMM-YY")
Ret_Type = MsgBox(filename, vbYesNo, "Filename Correct?")
因此,Datetime
会在您捕获后立即存储并保存,否则,如果用户需要1个小时才能在MsgBox中单击“确定”,并且在保存期间再次设置了Now()
,则将采用最新日期,而不是一个小时前生成的第一个日期。
此外,从不建议以编程方式在文件名中放置空格字符。您应该用下划线替换它们。尝试以下代码行来保存您的xlsx文件:
ActiveWorkbook.SaveAs("M:\Quality\Public\ManufacturingHistory\RoughnessTestingResults\" & filename & ".xlsx")
答案 1 :(得分:0)
感谢洛根和吉米。
如果其他人正在寻找类似的功能,则最终代码如下 我建议在inputBox上使用用户表单,因为我无法使inputBox根据输入的字符数自动接受
Sub tt()
将inputData设置为字符串
Application.DisplayAlerts = False
inputData = InputBox("Scan Job Number:", "Scan it you slag!")
If inputData <> "" Then
scan = inputData
End If
inputData = InputBox("Scan part number:", "Scan it you slag!")
If inputData <> "" Then
partnum = inputData
End If
昏暗的文件名作为字符串 filename = scan&“ ”&partnum&“ ”&Format(Now(),“ DD-MMM-YY-HH-MM-SS”)
Ret_Type = MsgBox(scan & "_" & partnum & "_" & Now(), vbYesNo, "Filename Correct?")
Select Case Ret_Type
Case 6
ActiveWorkbook.SaveAs ("M:\Quality\Public\ManufacturingHistory\RoughnessTestingResults\" & filename & ".xls")
Case 7
Call tt
End Select
结束子