Сохранить новый файл со значением имени файла - PullRequest
0 голосов
/ 05 февраля 2019

Я работаю над созданием универсального производственного расписания (wbTime) для каждого отдела, которое будет работать во всех сменах и линиях.У меня есть, где требуется ввести всю необходимую информацию, все данные копируются в таблицу в другой рабочей книге (wbLog) и сохраняются для проведения анализа производственных данных.

Однако, когда дело доходит до попытки сохранить фактическое расписание в нужной папке в соответствии со сменой и машинной линией, я начинаю сталкиваться с проблемами.У меня есть таща часть пути из определенных ячеек и имя файла формируют дату ввода.Он добирается до последней строки и выдает ошибку времени выполнения 1004 «Метод« Сохранить как »из object_Worbook'failed».

Я играю с 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

Ответы [ 2 ]

0 голосов
/ 05 февраля 2019

Вы используете в качестве имени файла текст 2/5/2019.xlsx.Насколько я знаю, в Windows нельзя использовать символ / для именования файлов.

Попробуйте использовать другое имя для файла.Что-то вроде:

Fname = Replace(Sheets("Production Time Sheet").Range("I2").Text,"/","-")
0 голосов
/ 05 февраля 2019

a) Не используйте Range.Text, используйте Range.Value2.
Text даст вам точно то, что написано в ячейке, и если ячейка отображает ###, потому чтоВаша ячейка должна сузиться, чтобы отобразить число, это даст вам ###.

b) Поставьте оператор Debug.print path перед SaveAs и отметьте в немедленном окне (Ctrl + G), если путь в точности соответствует ожидаемому.

c) Убедитесь, что при вводе команды SaveAs этот же файл еще не открыт в Excel - это часто происходит при тестированииповторно кодSaveAs сохраняет копию файла и сохраняет его открытым!

d) Используйте FileFormat:=xlOpenXMLWorkbook при именовании файла с расширением xlsx.xlNormal сохранит файл со старым форматом файла Excel и ожидает xls как расширение.

e) Попробуйте сохранить файл с точным именем в диалоговом окне Excel SaveAs, чтобы увидеть, подходит ли имя файла.и у вас есть разрешение на сохранение файла.

...