У меня есть код, который просматривает список текстовых файлов, открывает их в Excel и очищает из них кавычки. Однако по какой-то загадочной причине, которую я не понимаю, без кавычек не сохраняется. Я пробовал разные способы очистки кавычек, но это все равно не работает.
Мне нужен код, чтобы открывать другие текстовые файлы и удалять кавычки из каждого из них.
Dim pathfile As String
Dim pathway As Workbook
Dim localcode As String
Dim wb As Workbook
Dim wayfile As String
Dim i As Integer
Application.ScreenUpdating = False
Application.DisplayAlerts = False
wayfile = "pathfile"
Set wb = Workbooks.Open(wayfile)
Range("A1").Select
i = 1
Do While Not IsEmpty(Range("a" & i))
Math = ActiveCell
pathfile = "pathfile"
pathfile = Replace(pathfile, "math", Math)
Set pathway = Workbooks.Open(pathfile)
Range("A1").Select
Do While ActiveCell.Value <> ""
ActiveCell.Replace What: = """", Replacement: = "", _
LookAt:=xlPart, SearchOrder:=xlByRows, _
MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2
ActiveCell.Offset(1, 0).Select
Loop
pathway, saveas fileformat:=xlTextWindows
pathway.Close
pathfile = "pathfile2"
pathfile = Replace(pathfile2, "math", Math)
Set pathway = Workbooks.Open(pathfile)
Range("A1").Select
Do While ActiveCell.Value <> ""
ActiveCell.Replace What: = """", Replacement: = "", _
LookAt:=xlPart, SearchOrder:=xlByRows, _
MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2
ActiveCell.Offset(1, 0).Select
Loop
pathway, saveas fileformat:=xlTextWindows
pathway.Close
Set wb = Workbooks.Open(camin)
Range("A1").Select
ActiveCell.Offset(1, 0).Select
i = i + 1
Loop
Application.ScreenUpdating = True
Application.DisplayAlerts = True
wb.Close
MsgBox "ok"
Да, pathway, saveas fileformat:=xlTextWindows
выглядит круто.
Мне нужен код, чтобы открывать другие текстовые файлы и удалять кавычки из каждого из них.
Для этого вам действительно не нужен Excel. Непосредственно откройте текстовый файл, замените текст и запишите его обратно в текстовый файл. Это то, что вы пытаетесь?
Option Explicit
Sub Sample()
Dim MyData As String
Dim FlName As String
'~~> Change this to the relevant text file
FlName = "C:\Users\routs\Desktop\test.txt"
'~~> Open text file in 1 go and read it
Open FlName For Binary As #1
MyData = Space$(LOF(1))
Get #1, , MyData
Close #1
'~~> Replace double quotes
MyData = Replace(MyData, Chr(34), "")
'~~> Write back to text file.
Open FlName For Output As #1
Print #1, MyData
Close #1
End Sub
Если у вас есть список текстовых файлов, вы можете преобразовать описанную выше процедуру в файл Function
.
Split/Join
в данном случае не требуется. Replace(MyData, Chr(34), "")
может сэкономить время.
О да! Ты прав! @выше. Могу ли я с уверенностью винить в этом отсутствие утреннего кофе? (обновил пост)
Абсолютно! Это классический случай «синдрома перед кофе», который снова проявляется.
Сработало безупречно, большое спасибо. Я просто не понимаю, как превратить это в функцию и как это работает при применении к другим файлам. У меня есть много других текстовых файлов, из которых нужно удалить кавычки, и я хочу это систематизировать.
Поместите код либо в Private Sub ReplaceQuotes(Fl as String)
, либо в Private Funtion ReplaceQuotes(Fl as String) as Boolean
, а затем просто передайте имя файла с путем к процедуре или функции в цикле. Используйте функцию, если вы хотите проверить, была ли произведена какая-либо замена, иначе просто используйте эту процедуру. @MatheusDonizeti
Ты действительно помог мне, друг, но я понятия не имею, как это сделать, я немного поискал, но так и не понял. В любом случае, большое спасибо
Я не думаю, что ваш код сможет пройти компилятор VBA. что это, это не способ запустить его. например.
ReplaceFormat:=FalseFormulaVersion:=xlReplaceFormula2
. Какие данные по полковнику А? Как создать минимальный воспроизводимый пример