Добрый день! Есть один файл, в котором должен быть макрос, открывающий другие файлы и вносящий в них изменения: Файлы, которые необходимо открыть находятся в той же папке что и файл с макросом, про них точно известно что они могут иметь разные названия, но точно Excel. Единственное, файлы могут иметь расширение *.xls и *.xlsx. Изменения в открытых файлах, необходимо сделать: по всей книге, на всех листах сделать автозамену одного символа "." на "," Файлы перед закрытием сохранить. Нашел у себя отрывок старого кода, но он не подходит...
Добрый день! Есть один файл, в котором должен быть макрос, открывающий другие файлы и вносящий в них изменения: Файлы, которые необходимо открыть находятся в той же папке что и файл с макросом, про них точно известно что они могут иметь разные названия, но точно Excel. Единственное, файлы могут иметь расширение *.xls и *.xlsx. Изменения в открытых файлах, необходимо сделать: по всей книге, на всех листах сделать автозамену одного символа "." на "," Файлы перед закрытием сохранить. Нашел у себя отрывок старого кода, но он не подходит...akaDemik
'Определяем текущую папку Dim sCurrentFolder As String sCurrentFolder = ThisWorkbook.Path
'Получаем имя первого файла из папки Dim sFile As String sFile = Dir(sCurrentFolder & "\" & "*.*", vbNormal)
'Перебор всех файлов Do While Len(sFile) <> 0 'Если имя файла не текущее - выполняем замену If sFile <> ThisWorkbook.Name Then ReplaceCharacters sFile sFile = Dir Loop
End Sub
Private Sub ReplaceCharacters(ByVal FileName As String)
Debug.Print "File: " & FileName
'Определяем максимальную строку и столбец, где перебираются ячейки Dim lRMax As Long Dim lCMax As Long lRMax = 100 lCMax = 100
'Получаем книгу Dim wbkTemp As Workbook Set wbkTemp = GetObject(ThisWorkbook.Path & "\" & FileName)
Dim lSheetNumber As Long Dim lC As Long Dim lR As Long
'Перебираем листы книги For lSheetNumber = 1 To wbkTemp.Sheets.Count Step 1 Debug.Print "Sheet " & lSheetNumber 'Перебираем строки For lR = 1 To lRMax Step 1 'Перебираем столбцы For lC = 1 To lCMax Step 1 'Записываем новое значение с замененной "." на "," 'Записывается как текст, если надо преобразовать - используйте Format wbkTemp.Sheets.Item(lSheetNumber).Cells(lR, lC).Value = _ Replace(CStr(wbkTemp.Sheets.Item(lSheetNumber).Cells(lR, lC).Value), _ ".", ",") Next lC Next lR Next lSheetNumber
'Делаем видимым окно обрабатываемой книги, чтобы потом при открытии отображалась wbkTemp.Windows.Item(1).Visible = True
'Сохраняем изменения, закрываем wbkTemp.Close (True) Set wbkTemp = Nothing
End Sub
[/vba]
akaDemik, замену можно сделать так
[vba]
Код
Option Explicit
Public Sub Main()
'Определяем текущую папку Dim sCurrentFolder As String sCurrentFolder = ThisWorkbook.Path
'Получаем имя первого файла из папки Dim sFile As String sFile = Dir(sCurrentFolder & "\" & "*.*", vbNormal)
'Перебор всех файлов Do While Len(sFile) <> 0 'Если имя файла не текущее - выполняем замену If sFile <> ThisWorkbook.Name Then ReplaceCharacters sFile sFile = Dir Loop
End Sub
Private Sub ReplaceCharacters(ByVal FileName As String)
Debug.Print "File: " & FileName
'Определяем максимальную строку и столбец, где перебираются ячейки Dim lRMax As Long Dim lCMax As Long lRMax = 100 lCMax = 100
'Получаем книгу Dim wbkTemp As Workbook Set wbkTemp = GetObject(ThisWorkbook.Path & "\" & FileName)
Dim lSheetNumber As Long Dim lC As Long Dim lR As Long
'Перебираем листы книги For lSheetNumber = 1 To wbkTemp.Sheets.Count Step 1 Debug.Print "Sheet " & lSheetNumber 'Перебираем строки For lR = 1 To lRMax Step 1 'Перебираем столбцы For lC = 1 To lCMax Step 1 'Записываем новое значение с замененной "." на "," 'Записывается как текст, если надо преобразовать - используйте Format wbkTemp.Sheets.Item(lSheetNumber).Cells(lR, lC).Value = _ Replace(CStr(wbkTemp.Sheets.Item(lSheetNumber).Cells(lR, lC).Value), _ ".", ",") Next lC Next lR Next lSheetNumber
'Делаем видимым окно обрабатываемой книги, чтобы потом при открытии отображалась wbkTemp.Windows.Item(1).Visible = True
'Сохраняем изменения, закрываем wbkTemp.Close (True) Set wbkTemp = Nothing