vikttur написал: Предложите название темы, отражающее задачу. Модераторы заменят
извините, я один раз уже предложил изменить название темы, - так меня забанили.я уж лучше промолчу. Да и название перврначальное точно соответствует теме. Просто мечник тут всё объяснил, и тема вроди поменялась, но это только внешне. Изначально всё осталось на своих местах.
да, прочитал, всё таки Union не совсем "катит"...ну, ладно, хоть узнал тему немного, спасибо! хотя меня поставщики просто задолбали своими фантазиями,- только наладил работу, раз! и добавили два столбца, причем пустые!! а просто так их не удалишь- снизу и сверу есть данные, которые нужны, их нужно теперь сдвигать, только и занимаюсь тем, делаю одни "заплатки".
Да, и вот здесь, в Вашем коде, строка 15 осталась: ilastcolumn = Cells(15, Columns.Count).End(xlToLeft).Column я поменял, типо так:
Код
a = Cells.Find("Наименование товара").row 'строка начала таблици
ilastcolumn = Cells(a, Columns.count).End(xlToLeft).Column
Mershik, мне нужна именно привязка к названию шапки таблицы("Наименование товара"), именно после названия правее мне нужно смотреть пустые столбцы. А так да, всё работает, как Вы сделали. -ну и начало таблицы будет не всегда в одним месте.
Mershik, в данном случае удолять пустые столбцы Е и F сразу, а не по-одному как сейчас. Макрос должен смотреть правее от названия "Наименование товара", и если есть пустой столбец- удолять, пока не закончатся пустые столбцы.
прилагаю файл, с кодом и примером. где я там накосячил, поясните пожалуйста немощному. сам макрос вот он, если кто сразу может пояснить тему:
Код
Sub заголовок()
'макрос ищет слово "Наименование товара" и проверяет правее: пусто там или нет, если будет пусто, удоляем правее все пустые столбцы
Dim a As Variant
Dim n As Variant
Dim rCell As Variant
Set rCell = Cells.Find("Наименование товара")
For Each a In rCell ' вот здесь я замутил цикл, он работает только один раз.
If rCell.Offset(0, 1).Resize(1, 1) = "" Then
a = rCell.Offset(0, 1).Resize(1, 1).Column
Columns(a).Delete
End If
Next
End Sub
Dim flag As Boolean
For Each myFile In myFolder.Files
flag = True
For Each bk In Workbooks
If bk.Name = myFile.Name Then
flag = False
Exit For
End If
Next bk
If flag Then
'Ваш код
' Я ПОДСТАВИЛ ПЕРЕХОД К МЕТКЕ:
GoTo metka_NextFile
End If
Next myFile
.ошибка та же: файл не иницианилизирован. если ничего не вставлять после If flag Then, то макрос просто обратывает открытый файл. а нужно, чтобы пропускал.
вот фрагмент кода, если после If bk.name = myFile.name Then вставить Next myFile, то выдает ошибку, что файл не инициализирован
Код
For Each myFile In myFolder.Files
For Each bk In Workbooks
If bk.FullName <> ActiveWorkbook.FullName Then
If bk.name = myFile.name Then
'ВОТ ТУТ ПОПЫТАЛСЯ ВСТАВИТЬ переход к следующему файлу, не прокатывает так((:
Next myFile
End If
End If
Next bk
Next myFile
можете помочь в этом деле? спасибо. Сами открытые файлы, и должны быть открыты, это означает, что они уже обработаны. Насколько я понимаю, просто так открытый файл нельзя пропустить, как , например с расширением ненужным?
макрос не выполняет вычисления, а только проверяет наличие букв в названиии, затем:смотрит проверку расширения; затем переходит сразу к End If и так по кругу . видимо:
Дмитрий(The_Prist) Щербаков, теперь понятно,- вы правы,- так и есть, останавливается(хотя расширение xlsx я не использую); но, проблема в том что не могу ваше условие поставить в код: либо зависает, либо ругается на отсутствие "Do" может подсткажете куда вставить ваше условие? сам код вот он:
Код
спецификация:
Do While Right(LCase(avFiles), 4) = ".xls" ' зе пирст дал
'Do While avFiles <> "" - оригинал
'Do While LCase(avFiles) Like "*.xls" - это я мастырил
'====================================
'Правильнее будет после этой строки
'Do While avFiles <> ""
'добавить условие
'If Right(LCase(avFiles), 4) = ".xls" Then
'обработка файла
'End If
'======================================
If sActWB <> avFiles Then
Workbooks.Open sPath & avFiles, False
End If
bCnt = False
With Sheets(sShName1)
avArr = .UsedRange.Value
'Итоги по суммам
lc = Find_Col(avArr, sFndStr)
lr = .Cells(.Rows.Count, lc - 1).End(xlUp).Row + 1
For li = 5 To 1 Step -1
If li = 1 And avArr(lr, lc - alStep(li - 1)) = 0 Then
bCnt = True
Else
adblSums(li) = adblSums(li) + avArr(lr, lc - alStep(li - 1))
End If
Next li
'Итоги по Кол-во мест:
lc = Find_Col(avArr, sFndCntStr) + 1
lr = .Cells(.Rows.Count, lc - 1).End(xlUp).Row
If bCnt Then
adblSums(1) = adblSums(1) + avArr(lr, lc) + avArr(lr, lc + 1)
Else
dblCntSum = dblCntSum + avArr(lr, lc) + avArr(lr, lc + 1)
End If
End With
If sActWB <> avFiles Then ActiveWorkbook.Close 0
avFiles = Dir
Loop
'подводим суммы в текущем файле
With Workbooks(sActWB).Sheets(sShName1)
avArr = .UsedRange.Value
'заносим результаты суммирования на лист
lc = Find_Col(avArr, sFndStr)
lr = .Cells(.Rows.Count, lc).End(xlUp).Row + lRowsCnt_UnderLastRow
For li = 1 To 5
With .Cells(lr, lc - alStep(li - 1))
.Value = adblSums(li)
.EntireColumn.AutoFit
.Borders.Color = -4165632: .Borders.Weight = xlThin
.Interior.Color = 12040422
If li < 3 Then .NumberFormat = ""
End With
Next li
With .Cells(lr, lc - alStep(0)).Offset(, -3).Resize(, 13)
.Font.ColorIndex = 3: .Font.Size = 18: .Font.Bold = True
End With
With .Cells(lr, lc - alStep(0)).Offset(, -3)
.Value = "сумма инвойсов:"
End With
'lc = Find_Col(avArr, sFndCntStr) + 1
' lc1 = Find_Col(avArr, sFndCntStr) - 3
' lc = "сумма инвойсов"
' With .Cells(lr, lc)
' .Value = dblCntSum
' .EntireColumn.AutoFit: .NumberFormat = ""
' .Borders.Color = -4165632: .Borders.Weight = xlThin
' .Interior.Color = 12040422
' End With
End With
Call Check.Main
'11. Прокрутка экрана к концу талбицы:
prokrutka
Application.ScreenUpdating = 1
End Sub
Вы прям помните??? это было в 13 году,- как можно помнить!!?? столько времени прошло, не реально же...... -я через два дня как в первый раз смотрю на код.....
Здравтсвуйте! Прошу помощи, в вопросе того, что макрос обращается к файлу с расширением .xlsm, хотя в коде я явно указал, что работаем с расширением .xls и по идее расширение .xlsm ДОЛЖЕН пропускать, но почему-то такого нет, сама часть кода выглядит так:
Код
Sub Main(control As Office.IRibbonControl)
Dim avFiles, sPath As String, li As Long, le As Long, lr As Long, lc As Long
.................
avFiles = Dir(sPath & "*.xls") -вот тут задал расширение
но далее все-равно открывает файл c расширением *.xlsm, почему не пропускает его? как избежать открытия ненужного расширения?? как его задать ещё? проблема, как я понимаю, что макрос в этом месте работает с любым расширением: Do While avFiles <> ""... как можно уточнить расширение?
Андрей_26, я прекрасно знаю правила размещения объявлений. Про ясновидение мне можно не объяснять. Я спрашиваю именно "навсидку" , может у кого была подобная проблема, тем более, что не у меня лично была проблема, и воспроизвести её я больше не могу. Единственно на что грешу-может какие свойства папки были особые?? потому-что всё закончилось, когда поменял папку. А макросам в надстройке от 9 лет там работает и ничего подобного не было раньше. ===================================================================================== Могу даже уточнить вопрос: в каком случае может самопроизвольно создаваться файл с именем надстройки с расширением .xlsm, если ничего подобного в коде вообще нет??
При запуске макроса ВДРУГ стала создаваться копия надстройки с расширением .xlsm. Причем когда я папку, откудова запускал файл, поменял,- всё стало нормально и больше не повторялось это безобразие и также в изначальной папке. Может кто знает причины такого неспортивного поведения надстройки?? У меня впервые такое встречается.
вот, по этим мотивам сделал макрос вставляющий строки сверху шапки в зависимости от кол-ва файлов в папке:
Код
' проверяем кол-во файлов в папке, и если их больше возможного- вставляем строки
' чтобы неналазило на таблицу
Sub ВставкаСтрок()
Dim counter
Dim fn
Dim myFSO As Object, myFolder As Object, myFile As Object
If ActiveSheet.Name = "спецификация" Then
Set c_naim = ActiveSheet.Cells.Find(what:="Наименование товара", LookAt:=xlWhole)
naim_row = c_naim.Row
End If
'3. Создание объекта для работы с папками и файлами.
Set myFSO = CreateObject(Class:="Scripting.FileSystemObject")
ChDir myFSO.GetFolder(ActiveWorkbook.Path)
fn = Dir("*.xls")
counter = 0
While Len(fn) > 0
counter = counter + 1
fn = Dir()
Wend
' счётчик файлов: counter
'макс. возиможное колическтво: naim_row - 6
'сколько строк вставляем: counter - naim_row - 6
'eсли макс возможное меньше или равно счетчику:
If naim_row - 6 <= counter - 1 Then
' то сумма строк будет равна :
counter_ins_row = counter - (naim_row - 6)
For i = 1 To counter_ins_row
Rows(naim_row).Insert
Next
End If
' Stop
End Sub
Все_просто, спасибо за идею, выручили сильно,- спасибо! чмоки) зы: только этот макрос отдельно не запускался из другого, писал: "отсутствует макрос такойто..."... пришлось вписать в основной.
надстройка не запускается,- виснет при открытии, сегодня сидел-ковырялся-тестировал, с утра всё работало, вдруг- бац, нажимаю на кнопку и сообщение: макросы отключены,и.т.д.
Nordheim написал: хранилище нужно переместить вне надстройки
уже был момент, когда листы-надстройки лежали на сервере,- так мне не нравилось... -ну, сейчас буду думать над этим...не знаю. Интерестно, сколько будет стоить переписать в коде порядка 10 листов-надстроек на сервер???
надстройка не запускается,- виснет при открытии, сегодня сидел-ковырялся-тестировал, с утра всё работало, вдруг- бац, нажимаю на кнопку и сообщение: макросы отключены,и.т.д.
надстройка не запускается,- виснет при открытии, сегодня сидел-ковырялся-тестировал, с утра всё работало, вдруг- бац, нажимаю на кнопку и сообщение: макросы отключены,и.т.д.
надстройка не запускается,- виснет при открытии, сегодня сидел-ковырялся-тестировал, с утра всё работало, вдруг- бац, нажимаю на кнопку и сообщение: макросы отключены,и.т.д.
надстройка не запускается,- виснет при открытии, сегодня сидел-ковырялся-тестировал, с утра всё работало, вдруг- бац, нажимаю на кнопку и сообщение: макросы отключены,и.т.д.
нет запрета же я говорю: я тестировал новые модули, с утра было все нормально, потом это сообщение и надстройка вообще перестала ЗАПУСКАТЬСЯ, даже не открывается.
надстройка не запускается,- виснет при открытии, сегодня сидел-ковырялся-тестировал, с утра всё работало, вдруг- бац, нажимаю на кнопку и сообщение: макросы отключены,и.т.д.
надстройка не запускается,- виснет при открытии, сегодня сидел-ковырялся-тестировал, с утра всё работало, вдруг- бац, нажимаю на кнопку и сообщение: макросы отключены,и.т.д.