Переименуйте TXT-файлы с помощью ADODB, не создавая новый - PullRequest
0 голосов
/ 28 июня 2019

моя проблема: у меня много текстовых файлов, которые я хочу переименовать. Я использовал объект ADODB.Stream для открытия / чтения / записи файлов, потому что они закодированы в UTF-8. Поэтому теперь, если это возможно, я хочу переименовать файлы без обходного пути: копировать их содержимое, записывать их содержимое в новый файл с нужным именем и удалять старое. Отметка времени на документах является для меня ценной информацией, поэтому я не хочу создавать новые файлы.

вот мой текущий обходной путь, который создает новые файлы и удаляет старые. Проблемы с кодом: 1) Скопированные файлы имеют новые метки времени 2) Новые строки не копируются в новые строки. Поскольку они содержат некоторый код XML, сгенерированные файлы становятся трудными для чтения. Мне нужно написать кусок кода, который устанавливает новые строки на всех подходящих позициях после копирования.

        Sub renameModules()
        Dim currentTXT As Variant, newTxt As Variant
        Dim currentPath As String, newPath As String
        Dim currentContent As String
        currentPath = "C:\Users\Me\Desktop\Test\MyCurrent.txt"
        newPath = "C:\Users\Me\Desktop\Test\Target001.txt"

        Set currentTXT = CreateObject("ADODB.Stream")
        currentTXT.Charset = "utf-8"
        currentTXT.Open
        currentTXT.LoadFromFile (currentPath)
        currentContent = currentTXT.ReadText()

        Set newTxt = CreateObject("ADODB.Stream")
        newTxt.Charset = "utf-8"
        newTxt.Open
        newTxt.WriteText currentContent
        newTxt.savetofile newPath, 1

        Kill currentPath

        End Sub

Для простоты я включил только основные этапы и исключил всю обработку ошибок.

Моя цель: найти какой-нибудь способ, чтобы просто переименовать текущий файл, не возиться с его содержимым.

1 Ответ

1 голос
/ 28 июня 2019

Не нужно иметь дело с ADODB.Stream: Вы можете использовать команду VBA name не только для переименования файла, но и для перемещения его в другую папку:

Name currentPath As newPath 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...