Как сохранить столбцы в формате .txt с условием VBA - PullRequest
0 голосов
/ 17 июня 2019

Я новичок в VBA, и я хотел бы знать, где я ошибся с моим кодом.

Sub Worksheet_Calculate()
        Application.EnableEvents = False
        If 
         code
        End If

        Application.EnableEvents = True:
        If Range("A3") <> Range("B4") Then
         Columns("B1:F10000").Select
         ChDir "C:\Users\Francesco\Desktop"
         ActiveWorkbook.SaveAs:="C:\Users\Francesco\Desktop\TXT.txt", _
         FileFormat:=xlTextMSDOS, CreateBackup:=False
        End If            
    End Sub

Мой фокус: когда условие If Range("A3") <> Range("B4") верно, я бывот так vba создает .txt.

Где я не прав?

Заранее спасибо.

Ответы [ 3 ]

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

Попробуйте:

Sub Worksheet_Calculate()

        If Range("A3") <> Range("B4") Then

            ActiveSheet.Range("B1:F10000").Select
            ActiveWorkbook.SaveAs "C:\Users\Francesco\Desktop\TXT.txt", FileFormat:=xlTextMSDOS, CreateBackup:=False

        End If

End Sub

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

0 голосов
/ 17 июня 2019

Попробуйте это

Function SimpleWriteToText(ByVal FileName, ByVal strText, Optional Wtype = "output")
If Wtype = "output" Then
    Open FileName For Output As #1
Else
    Open FileName For Append As #1
End If
        Print #1, strText;
    Close #1
End Function

Использование

SimpleWriteToText ThisWorkbook.path & "\Text.txt", "Hello"  ' Append
SimpleWriteToText ThisWorkbook.path & "\Text.txt", "Hello", "output"  ' NewOne
0 голосов
/ 17 июня 2019
Dim wb as workbook, wb1 as workbook
set wb = activeworkbook
set wb1 = application.workbooks.new

If Range("A3") <> Range("B4") Then
     wb.activate
     Columns("B1:F10000").copy
     wb1.activate
     range("A1").paste
     ChDir "C:\Users\Francesco\Desktop"
     wb1.SaveAs:="C:\Users\Francesco\Desktop\TXT.txt", FileFormat:=xlTextMSDOS, CreateBackup:=False
     call wb1.close(false)
End If            

Не тестировалось.

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