#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», так что вы можете это исправить…