расскажите что-то немного о нюансах, иначе ценность темы для форума сомнительна...
Основной нюанс оказался в этом макросе (копирует модуль со всеми макросами в нём из одного файла в другой)\:[vba]
Код
Sub Copy_Module() 'копировать модуль с макросом Dim objVBProjFrom As Object, objVBProjTo As Object, objVBComp As Object Dim sModuleName As String, sFullName As String 'расширение стандартного модуля Const sExt As String = ".bas" sModuleName = "MyMacros" 'имя модуля который будет скопирован On Error Resume Next Set objVBProjFrom = ThisWorkbook.VBProject 'проект книги, из которой копируем модуль Set objVBComp = objVBProjFrom.VBComponents(sModuleName) 'необходимый компонент If objVBComp Is Nothing Then 'если указанного модуля не существует MsgBox "Модуль с именем '" & sModuleName & "' отсутствует в книге.", vbCritical, "Error" Exit Sub End If Set objVBProjTo = ActiveWorkbook.VBProject 'проект книги для добавления модуля 'sFullName = "C:\" & sModuleName & sExt 'полный путь для экспорта/импорта модуля. К папке должен быть доступ на запись/чтение sFullName = Application.DefaultFilePath & "\" & sModuleName & Ext objVBComp.Export Filename:=sFullName objVBProjTo.VBComponents.Import Filename:=sFullName Kill sFullName 'удаляем временный файл для импорта End Sub
[/vba] Вместо строки, которая в макросе закомментирована, нужно поставить строку: sFullName = Application.DefaultFilePath & "\" & sModuleName & Ext. Это в случае, если я понял правильно, когда политикой безопасности запрещена запись непосредственно на диск "C" (у меня на работе так на некоторых ПК). Второй нюанс, которого не знал:в одной из строк макроса была такая команда - Workbooks(NBook).Activate . При этом NBook содержала имя файла вида: "ИмяФайла", а нужно было "ИмяФайла.xls" то есть с расширением, хотя дома у меня и без этого всё работало. И третий: на некоторых ПК не происходила вставка в строку формул формулы для текста прописью и штрих-кода. Здесь я не знаю в чём дело: на одной и той же машине, под одним пользователем работало, под другим нет. Настроил всё это на работе человек из службы безопасности (даже не в EXCEL, кажется) и всё заработало! Я при этом не был, что он делал не могу сказать.
расскажите что-то немного о нюансах, иначе ценность темы для форума сомнительна...
Основной нюанс оказался в этом макросе (копирует модуль со всеми макросами в нём из одного файла в другой)\:[vba]
Код
Sub Copy_Module() 'копировать модуль с макросом Dim objVBProjFrom As Object, objVBProjTo As Object, objVBComp As Object Dim sModuleName As String, sFullName As String 'расширение стандартного модуля Const sExt As String = ".bas" sModuleName = "MyMacros" 'имя модуля который будет скопирован On Error Resume Next Set objVBProjFrom = ThisWorkbook.VBProject 'проект книги, из которой копируем модуль Set objVBComp = objVBProjFrom.VBComponents(sModuleName) 'необходимый компонент If objVBComp Is Nothing Then 'если указанного модуля не существует MsgBox "Модуль с именем '" & sModuleName & "' отсутствует в книге.", vbCritical, "Error" Exit Sub End If Set objVBProjTo = ActiveWorkbook.VBProject 'проект книги для добавления модуля 'sFullName = "C:\" & sModuleName & sExt 'полный путь для экспорта/импорта модуля. К папке должен быть доступ на запись/чтение sFullName = Application.DefaultFilePath & "\" & sModuleName & Ext objVBComp.Export Filename:=sFullName objVBProjTo.VBComponents.Import Filename:=sFullName Kill sFullName 'удаляем временный файл для импорта End Sub
[/vba] Вместо строки, которая в макросе закомментирована, нужно поставить строку: sFullName = Application.DefaultFilePath & "\" & sModuleName & Ext. Это в случае, если я понял правильно, когда политикой безопасности запрещена запись непосредственно на диск "C" (у меня на работе так на некоторых ПК). Второй нюанс, которого не знал:в одной из строк макроса была такая команда - Workbooks(NBook).Activate . При этом NBook содержала имя файла вида: "ИмяФайла", а нужно было "ИмяФайла.xls" то есть с расширением, хотя дома у меня и без этого всё работало. И третий: на некоторых ПК не происходила вставка в строку формул формулы для текста прописью и штрих-кода. Здесь я не знаю в чём дело: на одной и той же машине, под одним пользователем работало, под другим нет. Настроил всё это на работе человек из службы безопасности (даже не в EXCEL, кажется) и всё заработало! Я при этом не был, что он делал не могу сказать.ОлеггелО