Как я могу получить этот код VBA для циклического перемещения по рабочим листам в указанном месте и удаления возврата каретки в каждой ячейке каждого? - PullRequest
0 голосов
/ 19 сентября 2019

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

Я нашел некоторый код, который успешно удалит возврат каретки, пройдя по всем ячейкам и заменив все возврат каретки (символ 10 - это то, что он обозначен в excel) вместо пробела.Я попытался отредактировать активную часть рабочей книги, чтобы назначить ее рабочим книгам / листам в определенном месте, но она вызвала ошибку.Я предоставляю код, который работает для удаления возвратов ниже.Мне просто нужно сделать это сейчас, чтобы сделать это в какой-то указанной рабочей книге и, возможно, путем выбора диалогового окна файла без открытия указанной рабочей книги.

Sub RemoveCarriageReturns()
    Dim MyRange As Range
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual

    For Each MyRange In ActiveSheet.UsedRange
        If 0 < InStr(MyRange, Chr(10)) Then
            MyRange = Replace(MyRange, Chr(10), "")
        End If
    Next

    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic
End Sub

1 Ответ

2 голосов
/ 19 сентября 2019

Наряду с комментарием BigBen это должно вам помочь:

Option Explicit
Sub RemoveCarriageReturns()

    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual

    Dim wb As Workbook 'declare a workbook type variable
    Dim MyFile As String 'declare a string variable to hold the file you want to pick
    Dim fd As FileDialog 'declare a file dialog variable

    Set fd = Application.FileDialog(msoFileDialogFilePicker)

    With fd
        .AllowMultiSelect = False
        .Title = "Please select a file"
        .Filters.Clear
        .Filters.Add "*", "*.csv"  'filter only csv files
        If .Show = True Then
            MyFile = .SelectedItems(1)
        Else
            MsgBox "you didn't pick a file, please start over."
            End
        End If
    End With

    Set wb = Workbooks.Open(MyFile) 'set the workbook variable openning the file you picked

    With wb.Sheets(1) 'assuming you have only 1 sheet per file, if not change 1 for "SheetName"
        .UsedRange.Replace Chr(10), ""
    End With

    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic

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