Я получил документ Excel, который имеет данные, которые похожи на следующее:
A B C
=========================================
1 |F:\folderName | | |
2 |AAA | | |
3 | AAA1 | None | |
4 | AAA2 | | |
5 | Somedoc.doc| | |
6 |F:\folderName2 | | |
7 |BBB | | |
8 | BBB1 | | |
9 | doc2.doc | | |
10| BBB2 | None | |
... continues ...
Папки могут быть вложены на любую глубину, и добавления отступа от использования "Ячеек Формата"> "Выравнивание"> "Отступ". Ячейки без документов внизу или слова "None" во втором столбце могут быть проигнорированы. Я должен преобразовать вышеупомянутый список во что-то применимое как:
F:\folderName\AAA\AAA2\Somedoc.doc
F:\folderName2\BBB\BBB1\doc2.doc
Как я могу сделать это? Если я мог бы изменить ячейки для замены формата добавления отступа некоторыми реальными пробелами, я мог, вероятно, скопировать содержание в текстовый файл и использовать регулярные выражения для соединения имен файлов. Это возможно?
В VBA:
Sub FileNameFix()
Dim FullRange As Range
Dim CopyIndex As Integer, PasteIndex As Integer
Dim RowIndex As Integer, LastRow As Integer
Dim i As Integer
Dim Text(0 To 10) As String
Dim None(0 To 10) As String
LastRow = Range("A65536").End(xlUp).Row
Set FullRange = Range("A1:B" & LastRow)
CopyIndex = 1
PasteIndex = 1
While CopyIndex < LastRow
For i = 0 To 10
Text(i) = ""
Next i
Do
Text(0) = FullRange.Cells(CopyIndex, 1)
CopyIndex = CopyIndex + 1
Loop Until Mid(Text(0), 2, 1) = ":"
RowIndex = 1
Do
Text(RowIndex) = FullRange.Cells(CopyIndex, 1)
None(RowIndex) = FullRange.Cells(CopyIndex, 2)
CopyIndex = CopyIndex + 1
RowIndex = RowIndex + 1
Loop Until Right(Text(RowIndex - 1), 3) = "doc"
For i = 1 To RowIndex - 1
If None(i) <> "None" Then
Text(0) = Text(0) + "\" + Text(i)
End If
Next i
Sheets("Sheet2").Cells(PasteIndex, 1) = Text(0)
PasteIndex = PasteIndex + 1
Wend
End Sub