#excel #vba
#excel #vba
Вопрос:
У меня есть макрос Excel, который может разделять и сохранять файлы для каждого столбца. Моя проблема в том, что ячейки из столбца, которые я хочу разделить, не могут быть сохранены как «.xls», если в ячейке есть точка «.» в тексте.
Например: DEF. корпорация
Файл при загрузке на мой компьютер
Что я должен изменить в своем коде VBA ниже, чтобы он работал?
Dim MyFile, NewFile As Variant
Dim sort_data As String
Dim last_row, tfiles, start_row, ktr As Long
'Sort data
Range(Separate.left_column amp; Separate.last, Separate.right amp; last_row).Select
Selection.sort Key1:=Range(Separate.sort amp; Separate.last 1), Order1:=xlAscending, Header:=True, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
'Initiate variable
tfiles = 0
'Loop through data
start_row = Separate.last 1
For ktr = Separate.last 1 To last_row
'Identify data
sort_data = Trim(UCase(Range(Separate.sort amp; start_row).Value))
'End of same data
If sort_data <> Trim(UCase(Range(Separate.sort amp; ktr).Value)) Then
'Copy and paste header
Range(Separate.left_column amp; Separate.first, Separate.right amp; Separate.last).Copy
Workbooks.Add
ActiveSheet.Paste
NewFile = ActiveWorkbook.Name
Windows(MyFile amp; "xlsx").Activate
'Copy and paste data
Range(Separate.left_column amp; start_row, Separate.right amp; ktr - 1).Copy
Windows(NewFile).Activate
Range(Separate.left_column amp; Separate.last 1).Select
ActiveSheet.Paste
'Bold header rows
Rows(Separate.first).Select
Selection.Font.Bold = True
Range(Separate.left_column amp; last 1).Select
'Auto fit
Cells.Select
Cells.EntireColumn.AutoFit
Cells.EntireRow.AutoFit
'Save workbook
Range(Separate.left_column amp; Separate.last 1).Select
new_file = IIf(Separate.current_file = True, MyFile amp; _
" ", "") amp; IIf(Len(Trim(Separate.prefix)) > 0, _
Separate.prefix amp; " ", "") amp; sort_data amp; _
IIf(Len(Trim(Separate.suffix)) > 0, _
" " amp; Separate.suffix, "") 'amp; "xlsx"
ActiveWorkbook.SaveAs Filename:=new_file, FileFormat:= _
xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
'Close workbook and return to original
ActiveWorkbook.Close
tfiles = tfiles 1
start_row = ktr
Комментарии:
1. Возможно, используя
Replace
решение этой проблемы. Таким образом, вы можете использоватьReplace(txt,".","")
2. Я предполагаю, что где-то по пути вы ищете имя файла / путь в течение определенного периода и рассматриваете все после него как расширение. Я не вижу здесь никакого
Workbook.Save
утверждения. ГдеSeperate
определено?3. Привет, ребята, пожалуйста, проверьте обновленный фрагмент кода. Спасибо!
Ответ №1:
Используйте замену, чтобы изменить вашу строковую переменную new_file
на символ подчеркивания _ или что-то в этом роде. Подчеркивание является одним из лучших вариантов, поскольку оно позволяет дважды щелкнуть полное имя файла (вместо использования тире) и обычно принимается веб-сайтами и другими системами размещения файлов.
Просто добавьте строку ниже перед вашей ActiveWorkbook.SaveAs
процедурой.
new_file = replace(new_file,".","_")