VBA - Код для завершения 0 отсутствует после преобразования файла в формат CSV - PullRequest
0 голосов
/ 11 марта 2019

У меня есть 2 команды для добавления 0 к номеру (8 цифр, требуется 9 цифр) и 0 добавлений к номерам сотового телефона (9 цифр, начинающихся с 5 цифр, должны быть 10 цифрами):

1.Добавьте от 0 до 8 цифр:

Sub Add_Zeros()
    Selection.NumberFormat = "@"
    For Each CL In Selection.Cells
        If CL <> "" Then CL.Value = Application.Rept("0", (9 - Len(CL))) & CL
    Next
End Sub

2.Добавьте от 0 до 9 цифр:

Sub Add_Zeros()
    Selection.NumberFormat = "@"
    For Each CL In Selection.Cells
        If CL <> "" Then CL.Value = Application.Rept("0", (10 - Len(CL))) & CL
    Next
End Sub

** 1. **Во-первых, могу ли я обновить эти коды и объединить их следующим образом?:

A. Первое условие: если есть только 8 цифр, вы добавите 0 в начале (наконец, должно быть 9 цифр)

B. Второе условие: если есть 9 цифр, а первая цифра слева равна 5, вы добавляете 0 в начале (наконец, должно быть 10 цифр)

C. Что-то еще, как мневернуть команду назад (т.е. до изменения), чтобы отменить?У вас есть способ вставить это в другой код?

** 2. ** Кроме того, я ищу способ запуска кода (если это VBA или что-то еще), который преобразует мой файл Xltm (после выполнения всех команд) вCSV-файл и сохраните мне 0 (нули), которые я добавляю.

Чтобы окончательный код для преобразования файла был построен следующим образом:

A.Сделайте Xltm для csv и оставьте мне 0 (ноль) в соответствии со следующим законом (который является способом удержания нулей):

1.Нажмите на вкладку данных |Из текста

2.Выберите Csv из диалогового окна привязки файлов

3.В мастере импорта текста (ШАГ 1) выберите «С разделителями» и нажмите «Далее».

4.В мастере импорта текста (ШАГ 2) выберите «Запятая» и нажмите «Далее».

5.В мастере импорта текста (ШАГ 3) выберите все столбцы и нажмите «текст» в «данных столбца»формат '

6. Нажмите кнопку "Готово"

7. Выберите ячейку, в которую вы хотите импортировать данные, и нажмите "ОК"

B.После этого сохраните мне файл как Xlsx.

* C. Если вы можете добавить еще одно действие в коде, которое также:

Измените расширение Xlsx снова на csv, это отлично (не сохранять как csv, а только изменять расширение файла)

Файл прикреплен Ссылка:

Рабочий файл

(проверьте это расширение Xltm)

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

Благословен с небес

1 Ответ

1 голос
/ 11 марта 2019

По вопросу 1:

Я не полностью слежу за вашим объяснением, но надеюсь, вы начнете:

Sub Add_Zeros()
    Selection.NumberFormat = "@"
    For Each CL In Selection.Cells
        If CL <> "" Then CL.Value = ZeroPad(CL) ' Move the logic to a function for better readability
    Next
End Sub


Function ZeroPad(Value)
    ZeroPad = Value ' Make sure you have a return value
    If Len(Value) <= 8 Then 'Pad with zeroes up to 9 chars
        ZeroPad = Right("000000000" & Value, 9)
    End If
    If Left(Value, "5") Then ' I didn't understand your question here. Just guessing
        ZeroPad = Right("000000000" & Value, 10)
    End If
End Function

По вопросу2:

Поскольку в настоящее время он сформулирован, это не вопрос StackOverFlow.Я предлагаю вам удалить эту часть и взглянуть на https://stackoverflow.com/help/mcve

...