簡體   English   中英

使用文件名單元格值保存新文件

[英]Save new file with filename cell value

我正在為每個部門制作通用的生產時間表( wbTime ),該wbTime將適用於所有班次和生產線。 我有需要輸入所有必要信息的地方,所有數據都被復制到另一個工作簿( wbLog )中的表中,並保存下來以便能夠對生產數據進行分析。

但是,當試圖根據班次和生產線將實際時間表保存在正確的文件夾中時,我開始遇到問題。 我有它從某些單元格中提取路徑的一部分,文件名形成了輸入的日期。 它到達最后一行,並拋出運行時錯誤1004“ object_Worbook的方法'SaveAs''失敗”。

我只在vba玩了2個月,所以我看不到它可能很小。

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會給你什么是寫在小區,如果小區diplays ### ,因為你的細胞是縮小來顯示一個數字,它會給你###

b)在SaveAs之前放置一條Debug.print path語句,並在立即窗口 (Ctrl + G)中檢查該路徑是否正是您期望的路徑。

c)確保當您發出SaveAs命令時,尚未在Excel中打開相同的文件-這種情況經常發生在您反復測試代碼時(它可能從上一次測試開始仍然打開)。 SaveAs保存文件副本並保持打開狀態!

d)在使用擴展名xlsx命名文件時,請使用FileFormat:=xlOpenXMLWorkbook xlNormal將使用舊的Excel文件格式保存文件,並期望將xls作為擴展名。

e)嘗試從Excel另存為對話框中保存名稱完全相同的文件,以查看文件名是否正確以及您是否有權保存文件。

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

嘗試使用其他名稱的文件。 就像是:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM