Объект VBScript Обязательная ошибка при переименовании файлов - PullRequest
1 голос
/ 11 октября 2019

Я пытаюсь написать скрипт, который переименовывает несколько файлов Excel. Если в названии файла есть «ТЕМП», я хочу изменить «ТЕМП» на дату из поля ввода.

Скрипт работает, пока я не доберусь до цикла For. Я получаю

Требуемый объект: ошибка «C: \ users \ jspfu \ sourc» в строке 23, ошибка 800A01A8

. Я действительно новичок в VBScript, и я в основном скопировал этот код из видео на YouTube, ну, в любом случае, часть цикла For.

Вот мой сценарий:

Option Explicit
Dim FSO,FileLoc, UsrDate, Msg, File, Oldname, NewFileName, FoldName

Set FSO = CreateObject("Scripting.FileSystemObject")
FileLoc = "C:\Users\jspfu\source\XL_Files"
UsrDate= Inputbox("Enter the Date", "Date")  
FoldName = FSO.GetFolder(FileLoc)

If IsNumeric(UsrDate) and UsrDate<>"" then
Msg = Msgbox ("is this " & UsrDate & " Correct",VBYesNo, "Verify Date")
end if  

Do While Msg <> 6
  If Msg = 7 Then
    UsrDate= Inputbox("Enter the Date", "Date")
        Msg = Msgbox ("is this " & UsrDate & " Correct",VBYesNo, "Verify Date")

    ElseIf Not IsNumeric(UsrDate) or UsrDate= "" then
        UsrDate= Inputbox("Enter the Date", "Date")

End If  
Loop

For each File in FoldName.files
    Oldname = FileLOC & File.name
    NewFileName = replace(Fname, "TEMP", Date)
    FSO.MoveFile Fname, NewFileName
Next

Спасибо за любую помощь.

1 Ответ

1 голос
/ 11 октября 2019

В вашем коде есть несколько проблем:

  1. Используйте Set, чтобы получить ссылку на объект для FoldName: Set FoldName = FSO.GetFolder(FileLoc)

  2. Используйте File.Name вместо MoveFile для непосредственного переименования файла

Вот как должен выглядеть ваш цикл:

For Each File In FoldName.Files
    NewFileName = Replace(File.Name, "TEMP", UsrDate)
    If NewFileName <> File.Name Then
        File.Name = NewFileName
    End If
Next
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...