Макрос для сохранения как из Excel в файл .txt с тем же именем файла и тем же расположением, что и исходный файл

#vba #macros

#vba #макросы

Вопрос:

Я пытаюсь написать макрос для сохранения как файла Excel в файл .txt, но с тем же исходным именем файла, что и файл Excel, и тем же путем, что и файл Excel. Если я записываю макрос, он заставляет меня выбрать путь и имя файла, и когда я снова запускаю макрос, он выбирает тот же путь и то же имя файла.

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

   Sub saveastxt()
'
' saveastxt Macro
'

'
    ChDir "C:UsersmcuppDesktop"
    ActiveWorkbook.SaveAs Filename:="C:UsersmcuppDesktopTest Macros.txt", _
        FileFormat:=xlText, CreateBackup:=False
    ActiveWorkbook.Close
End Sub
 

Комментарии:

1. SO не является веб-сайтом «code for me» — пожалуйста, покажите код, который вы использовали, и что вы пробовали. Я могу предложить заглянуть в ThisWorkbook.Fullname функцию, чтобы получить путь к файлу и имя, а затем заменить последние три или четыре символа на txt в функции сохранения пути к файлу.

2. При переполнении стека код должен быть отформатирован определенным образом. Пожалуйста, прочитайте раздел справки. Я не уверен, почему вы отклонили дружественное редактирование, которое отображает код как код. Нечитаемый код с меньшей вероятностью получит ответ, и другие обычные пользователи отредактируют ваш вопрос точно так же, как я.

3. Самый быстрый способ — выделить ваш код, а затем нажать Ctrl k

Ответ №1:

Приведенный ниже код будет работать с любым расширением файла и сохранит рабочую книгу в виде текстового файла.

 Sub saver()
Dim fn As String
Dim l As Long
Dim wb As Workbook

Set wb = ActiveWorkbook
fn = wb.FullName
l = InStrRev(fn, ".")
fn = Left(fn, l)
fn = fn amp; "txt"

wb.SaveAs Filename:=fn, FileFormat:=xlText
wb.Close

End Sub
 

Ответ №2:

Что-то вроде этого (непроверенный)

 Sub saveastxt()

    With ActiveWorkbook
        .SaveAs Filename:= .Path amp; "" amp; .Name amp; ".txt", _
                FileFormat:=xlText, CreateBackup:=False
        .Close
    End With

End Sub
 

Я не удалял «.xlsx» из имени файла, просто добавил «.txt», так что вы можете это исправить…