Excel 使用文件名单元格值保存新文件

Excel 使用文件名单元格值保存新文件,excel,vba,save-as,Excel,Vba,Save As,我正在为每个部门制作一份通用生产时间表(wbTime),该部门将跨所有班次和生产线工作。我有需要输入所有必要信息的地方,所有数据都被复制到另一个工作簿(wbLog)的表中,并保存起来,以便能够对生产数据进行分析 然而,当我试图根据班次和生产线将实际的时间表保存在适当的文件夹中时,我开始遇到问题。我让它从某些单元格中提取部分路径,并从输入日期中提取文件名。它正在到达最后一行并抛出运行时错误1004“object_Worbook'failed的方法'SaveAs' 我只玩了2个月的vba,所以它可能

我正在为每个部门制作一份通用生产时间表(
wbTime
),该部门将跨所有班次和生产线工作。我有需要输入所有必要信息的地方,所有数据都被复制到另一个工作簿(
wbLog
)的表中,并保存起来,以便能够对生产数据进行分析

然而,当我试图根据班次和生产线将实际的时间表保存在适当的文件夹中时,我开始遇到问题。我让它从某些单元格中提取部分路径,并从输入日期中提取文件名。它正在到达最后一行并抛出运行时错误1004“object_Worbook'failed的方法'SaveAs'

我只玩了2个月的vba,所以它可能是一些小东西,我只是没有看到

Sub TransferData()

   If ActiveSheet.Range("E2").Value = "" Then
        MsgBox "Operator Name Required", vbInformation, "ALERT: Missing Information"
    Cancel = True
   Exit Sub
   End If

   If ActiveSheet.Range("H2").Value = "" Then
        MsgBox "Date Required", vbInformation, "ALERT: Missing Information"
    Cancel = True
   Exit Sub
   End If

   If ActiveSheet.Range("K2").Value = "" Then
        MsgBox "Shift Required", vbInformation, "ALERT: Missing Information"
    Cancel = True
   Exit Sub
   End If

   If ActiveSheet.Range("M2").Value = "" Then
       MsgBox "Line Required", vbInformation, "ALERT: Missing Information"
    Cancel = True
   Exit Sub
   End If



   Dim wbTime As Workbook
   Set wbTime = ThisWorkbook
   Dim wbData As Workbook
   Dim LastRow As Long

   Set wbTime = ActiveWorkbook
   With wbTime.Sheets("Production Time Sheet")
       LastRow = .Range("E" & .Rows.Count).End(xlUp).Row
   End With
   wbTime.Sheets("Production Time Sheet").Range("A6:R" & LastRow).Copy

   Set wbData = Workbooks.Open("S:\Lean Carrollton Initiative\Michael\Time Sheet Data LT Test.xlsm")
   Set wbData = ActiveWorkbook
   wbData.Worksheets("Log").Range("A" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues

   wbData.Close SaveChanges:=True



   Dim Fname As String
   Dim Path As String
   Dim shft As String
   Dim Line As String

Set wbTime = ActiveWorkbook
    Fname = Sheets("Production Time Sheet").Range("I2").Text

    shft = Sheets("Production Time Sheet").Range("Z9").Text

    Line = Sheets("Production Time Sheet").Range("AC11").Text

    Path = "K:\Groups\OFS Time Sheets\8hr Production Schedule\LT Jacketing\" & shft & Line & Fname & ".xlsx"

ActiveWorkbook.SaveAs filename:=Path, FileFormat:=xlNormal

End Sub
a) 不要使用
Range.Text
,使用
Range.Value2

Text
将准确显示单元格中写入的内容,如果单元格显示
####
,因为单元格要缩小以显示数字,它将显示
###

b) 将语句
Debug.print path
放在
SaveAs
之前,并在即时窗口(Ctrl+G)中检查路径是否与您期望的完全一致

c) 请确保在发出
SaveAs
-命令时,Excel中尚未打开同一文件-重复测试代码时经常会出现这种情况(可能在上次测试时仍会打开)。另存为保存文件副本并使其保持打开状态

d) 使用扩展名命名文件时,请使用
FileFormat:=xlOpenXMLWorkbook
xlNormal
将使用旧的Excel文件格式保存文件,并期望
xls
作为扩展名

e) 尝试使用Excel“另存为”对话框中的确切名称保存文件,以查看文件名是否正确,以及您是否有保存文件的权限。

a)不要使用
范围。Text
,使用
范围。value 2

Text
将准确显示单元格中写入的内容,如果单元格显示
####
,因为单元格要缩小以显示数字,它将显示
###

b) 将语句
Debug.print path
放在
SaveAs
之前,并在即时窗口(Ctrl+G)中检查路径是否与您期望的完全一致

c) 请确保在发出
SaveAs
-命令时,Excel中尚未打开同一文件-重复测试代码时经常会出现这种情况(可能在上次测试时仍会打开)。另存为保存文件副本并使其保持打开状态

d) 使用扩展名命名文件时,请使用
FileFormat:=xlOpenXMLWorkbook
xlNormal
将使用旧的Excel文件格式保存文件,并期望
xls
作为扩展名


e) 尝试使用Excel“另存为”对话框中的确切名称保存文件,以查看文件名是否正确,以及您是否具有保存文件的权限。

您正在使用文本
2/5/2019.xlsx作为文件名。据我所知,simbol
/
不能在Windows中用于命名文件

请尝试为文件使用其他名称。比如:

Fname = Replace(Sheets("Production Time Sheet").Range("I2").Text,"/","-")

您正在使用文本
2/5/2019.xlsx
作为文件名。据我所知,simbol
/
不能在Windows中用于命名文件

请尝试为文件使用其他名称。比如:

Fname = Replace(Sheets("Production Time Sheet").Range("I2").Text,"/","-")

在尝试另存为之前,可以添加
Msgbox路径
Debug.Print路径
,以查看
Path
的内容。希望这会显示出你的问题。如果没有,请尝试手动另存为确切的文件路径和名称,以查看是否有更有用的错误。我运行了
debug.print
,路径对我来说是正确的K:\Groups\OFS时间表\8hr生产计划\LT-Jacketing\1st\J4\2/5/2019.xlsx'算出了!这是日期的格式…文件名中不能有斜杠…告诉你一些小事情haha@mdavis0510这正是我在回答中所说的。很高兴你找到了it@FoxfireAndBurnsAndBurns是的,我才意识到这一点,但如果我没有注意到的话,我会非常感谢你的帮助!我想在花了一个小时注意到这一点后,我还需要一杯咖啡。在尝试另存为之前,可以添加
Msgbox路径
Debug.Print路径
,以查看
Path
的内容。希望这会显示出你的问题。如果没有,请尝试手动另存为确切的文件路径和名称,以查看是否有更有用的错误。我运行了
debug.print
,路径对我来说是正确的K:\Groups\OFS时间表\8hr生产计划\LT-Jacketing\1st\J4\2/5/2019.xlsx'算出了!这是日期的格式…文件名中不能有斜杠…告诉你一些小事情haha@mdavis0510这正是我在回答中所说的。很高兴你找到了it@FoxfireAndBurnsAndBurns是的,我才意识到这一点,但如果我没有注意到的话,我会非常感谢你的帮助!我想在花了一个小时注意到这一点后,我需要再喝一杯咖啡,哈哈。