VBA работает пошагово, но не работает - PullRequest
0 голосов
/ 19 июня 2020

Мой код VBA ниже работает, когда я перехожу, но не когда запускаю. Я хочу, чтобы каждая вкладка сохранялась как файл csv в выбранной мной папке. Когда я запускаю его, код сохраняет первый лист несколько раз, названный в честь каждой вкладки. Надеюсь, это понятно, см. Код ниже.

Sub SaveAsCsv()
Dim xWs As Worksheet
Dim xDir As String
Dim folder As FileDialog
Set folder = Application.FileDialog(msoFileDialogFolderPicker)
If folder.Show <> -1 Then Exit Sub
xDir = folder.SelectedItems(1)
For Each xWs In Application.ActiveWorkbook.Worksheets
xWs.SaveAs xDir & "\" & xWs.Name, xlCSV
Next
End Sub

Спасибо!

Ответы [ 2 ]

0 голосов
/ 19 июня 2020

Ваше имя немного сбивает с толку. Поэтому я изменил имена переменных. Но теперь код работает.

Sub SaveAsCsv()
    ' 53

    Dim Ws As Worksheet
    Dim Folder As String
    Dim Dialog As FileDialog

    Set Dialog = Application.FileDialog(msoFileDialogFolderPicker)
    If Dialog.Show Then
        Folder = Dialog.SelectedItems(1)
        For Each Ws In ActiveWorkbook.Worksheets
            Ws.SaveAs Folder & "\" & Ws.Name, xlCSV
        Next
    End If
    MsgBox "Done", vbInformation, "Action report"
End Sub

Обратите внимание, что выход из процедуры до ее завершения не является хорошей практикой программирования, как и использование команд GoTo. По возможности старайтесь избегать ни того, ни другого. В этом случае это легко сделать, используя тот же оператор IF, который у вас есть.

0 голосов
/ 19 июня 2020

удалить созданный файл и снова запустить. потому что F8 уже создал файл, и пока вы запускаете f5, он не знает, где сохранить

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