Excel, нужен макрос натравливаемый на папку с файлами экселя.

  • Автор темы Автор темы George
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.
Ответ: Excel, нужен макрос натравливаемый на папку с файлами экселя.

Не понимает система документооборота
Может проще что-то в системе документооборота поправить? а то она может обращаться к Formula, а достаточно получить Value
 
Ответ: Excel, нужен макрос натравливаемый на папку с файлами экселя.

Может проще что-то в системе документооборота поправить?
Бесполезно. Разработчик официально подтвердил, что он ничего сделать не может. Потому и возникла эта тема.
 
Ответ: Excel, нужен макрос натравливаемый на папку с файлами экселя.

Бесполезно. Разработчик официально подтвердил, что он ничего сделать не может. Потому и возникла эта тема.
Разработчики тоже мне делают заявления типа "...получается динамический состав колонок в наборе данных. Excel с такими вещами не работает" тогда как вопрос решался элементарным парсингом строки.
Можно конечно и костылями городить, но делать их по прихоти разработчика несколько странно.
 
Ответ: Excel, нужен макрос натравливаемый на папку с файлами экселя.

Пока вы тут спорили я уже половину кода написал. ;-)
 
Ответ: Excel, нужен макрос натравливаемый на папку с файлами экселя.

но делать их по прихоти разработчика несколько странно.
Система уже куплена. Делать нечего - приходится извращаться. Фича может быть и будет в этой проге, но не сейчас точно. А дневники должны в школе уже публиковаться. Так что надо то, что в теме и запросил. Более того данный способ сэкономит деньги школе. Так как на одну страничку будет один логин, а не 20-30(по количеству детей в классе). Разрабы сами виноваты, не будет у них дозакупки лицензий до всего количества учеников'P:E''P:E''P:E'.

Пока вы тут спорили я уже половину кода написал. ;-)
Спасибо. Жду.'beer1'
 
Ответ: Excel, нужен макрос натравливаемый на папку с файлами экселя.

Код:
Function GetPassword(ByVal Name As String) As String
 a = 0
 For i = 1 To Len(Name)
  a = a + Asc(Mid(Name, i, 1))
 Next i
 GetPassword = a
End Function
Sub Ìàêðîñ1()
   SrcPath = Application.ActiveWorkbook.Path
   If SrcPath = "" Then Exit Sub

   If Right(SrcPath, 1) <> "\" Then SrcPath = SrcPath & "\"
   
   DstPath = SrcPath & "Без формул\"
   
   On Error GoTo MkDirErr
   MkDir ("Без формул")
MkDirErr:
   Passwords$ = SrcPath & "passwords.txt"
   Open Passwords$ For Output As #1
   Close #1
    sFile = FileSystem.Dir(SrcPath & "*.XLS")
    Do While sFile <> ""
     Workbooks.Open Filename:=SrcPath & sFile
     
     
     pass$ = GetPassword(sFile)
     
     Application.DisplayAlerts = False
     ActiveWorkbook.SaveAs Filename:=DstPath & sFile, _
        FileFormat:=xlNormal, Password:=pass$, _
        ReadOnlyRecommended:=True, CreateBackup:=False
     Application.DisplayAlerts = True
     
     Open Passwords$ For Append As #1
     Write #1, sFile & " " & pass$ & Chr(13) & Chr(10)
    
     Close #1
     sFile = FileSystem.Dir()
    Loop


End Sub
Ну вот для тестирования что-то в этом духе. Запускается из папки с документами, создает подпапку "Без формул" в которую копирует уже запароленные файлы. В качестве паролей не мудрствуя лукаво взял сумму кодов символов имени файла. Формулы тоже пока в числа не преобразовываются.
 
Ответ: Excel, нужен макрос натравливаемый на папку с файлами экселя.

Формулы в числа это перебор листов воркбука, выбор всех ячеек и копипаст.
типа
PHP:
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
По генерации пароля продумывал более замороченное решение, цифры все же должны зависеть от позиции и в результате генерировать пароль по задаваемой маске.

Не по теме:
Кстати чтобы текст не слетал, его нужно копировать на русской раскладке.
 
Ответ: Excel, нужен макрос натравливаемый на папку с файлами экселя.

По генерации пароля продумывал более замороченное решение, цифры все же должны зависеть от позиции и в результате генерировать пароль по задаваемой маске.
Ну я ж самый простой хэш для начала сотворил. Да и кто там из школьников символы суммировать будет что ли? ;)
В общем, считай, вскладчину макрос готов. ;)
 
Ответ: Excel, нужен макрос натравливаемый на папку с файлами экселя.

Ну а теперь ламеру экселя скажите как этот код использовать... Мне же нужно как-то его запускать вне файла экселя.

Формулы в числа это перебор листов воркбука, выбор всех ячеек и копипаст.
То есть в коде _MBK_ этого нет? Если нет то в какое место кода добавить Ваши строчки?
 
Ответ: Excel, нужен макрос натравливаемый на папку с файлами экселя.

Ну а теперь ламеру экселя скажите как этот код использовать...
Создать документ, Alt+F11, Insert-Module, скопировать весь код и поправить русское название в названии функции. Запускать по Alt+F8.
Пока весь код на уровне концепта, строчек там поболее раз в несколько будет если доводить до ума.
Но через недельку думаю допилим, сейчас пока времени нет, скрипты по работе осваиваю.
 
Ответ: Excel, нужен макрос натравливаемый на папку с файлами экселя.

Запускать по Alt+F8.
Ни одного макроса не видно...
Можно "по полочкам"? Макрос надо будет что в каждый файл экселя писать? Или из какого-то одного файла запускать. Module - это не сам макрос, как его сделать таковым?

И в 29 посте вопрос - ответьте.
 
Ответ: Excel, нужен макрос натравливаемый на папку с файлами экселя.

Пока мой код бесполезен, это просто часть записанного макроса... я его добавил поскольку возможности специальной вставки в экселе не совсем тривиальны.
Для полной функциональности нужно еще добавить цикл перебора рабочих листов.
Если макросов невидно, то возможно нужно выбрать "находиться в".. А лучше перед вставкой модуля щелкнуть на названии книги в дереве слева.
 
Ответ: Excel, нужен макрос натравливаемый на папку с файлами экселя.

Если макросов невидно, то возможно нужно выбрать "находиться в"..
Не помогает. Module же это не макрос, я так понимаю.
Выбираю module1 - жму F5 выскакивает окно запуска макроса, где нет ни одного макроса.
 
Ответ: Excel, нужен макрос натравливаемый на папку с файлами экселя.

Чисто теоретически, задумки, как это будет работать в итоге. По идее ж надо, чтобы иконкой из десктопа запускалось? (Кстати, с этим тоже потенциальная проблема может быть - каталоги-то, по идее, любые, а значит, все-таки придется папку руками выбирать) Для запуска сделать XLS файл, у которого в автозагрузке будет стоять вызов этого макроса с последующим закрытием эксела. Но, опять же, тогда придется делать выбор каталога.
Выбираю module1 - жму F5 выскакивает окно запуска макроса, где нет ни одного макроса.
А код в Module1 скопировал?
 
Ответ: Excel, нужен макрос натравливаемый на папку с файлами экселя.

Про F5 я ничего не говорил... если хочется F5 воспользоваться, то нужно курсор кинуть к примеру на строчку "SrcPath = Application.ActiveWorkbook.Path"
 
Ответ: Excel, нужен макрос натравливаемый на папку с файлами экселя.

macro.jpg
Вот так
 
Ответ: Excel, нужен макрос натравливаемый на папку с файлами экселя.

По идее ж надо, чтобы иконкой из десктопа запускалось? (Кстати, с этим тоже потенциальная проблема может быть - каталоги-то, по идее, любые, а значит, все-таки придется папку руками выбирать)
Да вот думаю, может просто в папке с файлами исходника пусть будет ярлык на запуск макроса?
 
Ответ: Excel, нужен макрос натравливаемый на папку с файлами экселя.

PHP:
Function GetPassword(ByVal Name As String) As String
 a = 0
 For i = 1 To Len(Name)
  a = a + Asc(Mid(Name, i, 1))
 Next i
 GetPassword = a
End Function
Sub in1()
   SrcPath = Application.ActiveWorkbook.Path
   If SrcPath = "" Then Exit Sub

   If Right(SrcPath, 1) <> "\" Then SrcPath = SrcPath & "\"
   
   DstPath = SrcPath & "Без формул\"
   
   On Error GoTo MkDirErr
   MkDir ("Без формул")
MkDirErr:
   Passwords$ = SrcPath & "passwords.txt"
   Open Passwords$ For Output As #1
   Close #1
    sFile = FileSystem.Dir(SrcPath & "*.XLS")
    Do While sFile <> ""
     Workbooks.Open Filename:=SrcPath & sFile
     
     
     pass$ = GetPassword(sFile)
     
     Application.DisplayAlerts = False
     ActiveWorkbook.SaveAs Filename:=DstPath & sFile, _
        FileFormat:=xlNormal, Password:=pass$, _
        ReadOnlyRecommended:=True, CreateBackup:=False
        
     Application.DisplayAlerts = True
     
     Open Passwords$ For Append As #1
     Write #1, sFile & " " & pass$ & Chr(13) & Chr(10)
    
     Close #1
     ActiveWorkbook.Close
     sFile = FileSystem.Dir()
    Loop


End Sub
Вобщем создаем новый документ, добавляем модуль, копируем туда весь код, сохраняем в папке с файлами, и шелкнув на строчке " SrcPath = Application.ActiveWorkbook.Path" жмем F5.
Должна появиться папка и туда скопироваться файлы с паролями.
 
Ответ: Excel, нужен макрос натравливаемый на папку с файлами экселя.

Гм а что поменялось? И где первая строка?
Да вот думаю, может просто в папке с файлами исходника пусть будет ярлык на запуск макроса?
Тогда конечно, сделать файл в котором только запуск макроса и самозакрытие.
Сейчас попробую.
 
Ответ: Excel, нужен макрос натравливаемый на папку с файлами экселя.

Гм а что поменялось? И где первая строка?
Первую строчку пропустил, уже исправился... добавил только закрытие сохраненного документа, а то не все любят щелкать на меню файл с зажатым шифтом.
Я бы ориентировался примерно на такой интерфейс, по крайней мере он централизирован и не нужно его раскидывать по папкам.
 

Вложения

  • concept.JPG
    concept.JPG
    106.9 КБ · Просм.: 1 143
Статус
Закрыто для дальнейших ответов.