Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Закрыть программно файл открытый макросом
 
Всем доброго времени суток!  
Понять не могу "где собака зарыта" когда вручную открываю документ то проблем нет, а стоит только открыть книгу макросом вроде:  
Sub Открыть()  
   Workbooks.Open Filename:="C:\1.xls"  
End Sub  
 
то при попытке сохранить его копию вылетает ошибка 'Run time error 404':  
 
Sub SaveAs()  
   If Not ActiveWorkbook Is Nothing Then  
      iFileName$ = ActiveWorkbook.Name &"_Копия"  
      iPath$ = ActiveWorkbook.Path '''  
      iPathSeparator$ = Application.PathSeparator '"\"  
      ActiveWorkbook.SaveCopyAs _  
         Filename:=iPath$ & iPathSeparator$ & iFileName$ 'Вылетает ошибка  
      ActiveWorkbook.Close True  
   Else  
      MsgBox "В настоящий момент нет активной книги", vbExclamation, ""  
   End If  
End Sub  
 
Сдается мне что файл все еще используется макросом на открытие... Как победить не уразумлю...
Извлечение данных из списка закрытых файлов
 
Всем доброго времени суток!  
В разделе "Приемы" есть прием под названием "Список файлов в папке" позволяющий "заполучить на лист Excel список файлов в заданной папке и ее подпапках".  
Примем что в заданной папке и подпапках находятся книги Excel, созданные по одному шаблону, и в каждом из них имеются данные в ячейке A1 на Лист1.    
Подскажите пожалуйста что нужно добавить в код макроса в примере для того чтобы в результате отображались не только имя файла, путь, размер и т.д., но и данные из ячейки A1 на Лист1 для каждого найденного файла!
Ошибка Excel после закрытия книги, созданной макросом
 
Помогите пожалуйста! Есть документ в котором с помощью функции СЛЧИС() просчитываются некоторые значения. По данным из этого документа на основе шаблона (*.xlt) создается книга с неизменными, конкретными значениями. Для этой цели собран следующий код, а для удобства новая книга автоматически сохраняется по пути в зависимости от данных на листе.  
В принципе, работает как надо, однако есть одно "но". Когда макрос уже выполнен и созданная книга открыта - все хорошо, но если ее закрыть и продолжить работу с исходным документом, вылетает ошибка и Excel закрывается. Как исправить - не могу понять.  
 
' Функции для обращения к папке Мои документы  
Private Declare Function SHGetSpecialFolderLocation Lib "shell32" (ByVal hwndOwner As Long, ByVal nFolder As Long, ppidl As Long) As Long  
Private Declare Function SHGetPathFromIDList Lib "shell32" (pidl As Long, ByVal pszPath As String) As Long  
Private Const MAX_PATH = 260  
Public Enum siCSIDL_VALUES  
   CSIDL_PERSONAL = &H5 ' Папка "Мои документы"  
End Enum  
Private Function dhTrimNull(strValue As String) As String  
   Dim intPos As Integer  
   intPos = InStr(strValue, vbNullChar)  
Select Case intPos  
Case 0  
   dhTrimNull = strValue  
Case 1  
   dhTrimNull = ""  
Case Else  
   dhTrimNull = Left$(strValue, intPos - 1)  
End Select  
End Function  
Public Function SpecialFolderLocation(ByVal CSIDL As siCSIDL_VALUES) As String  
   Dim lngRet As Long  
   Dim strLocation As String  
   Dim pidl As Long  
   lngRet = SHGetSpecialFolderLocation(0, CSIDL, pidl)  
   strLocation = Space$(MAX_PATH)  
   lngRet = SHGetPathFromIDList(ByVal pidl, strLocation)  
   SpecialFolderLocation = dhTrimNull(strLocation)  
End Function  
Sub Создание_протокола()  
   With Application  
       .Calculation = xlManual  
       .MaxChange = 0.001  
   End With  
   i = ThisWorkbook.Name  
   Application.ScreenUpdating = False  
   Workbooks.Open Filename:= _  
   "C:\Шаблон.xlt" _  
   , Editable:=True  
   Sheets("Лист1").Select  
   Windows(i).Activate  
     
   ' Копирование-вставка из исходного документа в шаблон  
   Range("A4:AI49").Select  
   Selection.Copy  
   Windows("Шаблон.xlt").Activate  
   Range("A4:AI49").Select  
   Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _  
   xlNone, SkipBlanks:=False, Transpose:=False  
   With Application  
       .Calculation = xlAutomatic  
       .MaxChange = 0.001  
   End With  
   Windows(i).Activate  
   Range("AL4:AN9").Select  
   Selection.Copy  
   Windows("Шаблон.xlt").Activate  
   Range("AL4:AN9").Select  
   Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _  
   xlNone, SkipBlanks:=False, Transpose:=False  
     
   ' Создание пути к файлу  
   strPath = SpecialFolderLocation(CSIDL_PERSONAL)  
   ControlPath = "\" & "Контроль"  
   ObjectPath = ControlPath & "\" & Range("AM5")  
   OrganizationPath = ObjectPath & "\" & Range("L52")  
   MaterialPath = OrganizationPath & "\" & "Материал"  
   DatePath = MaterialPath & "\" & Range("AM10")  
   ControlFolderName = strPath & ControlPath  
   ObjectFolderName = strPath & ObjectPath  
   OrganizationFolderName = strPath & OrganizationPath  
   MaterialFolderName = strPath & MaterialPath  
   DateFolderName = strPath & DatePath  
   Set oFSO = CreateObject("Scripting.FileSystemObject")  
   Do Until oFSO.FolderExists(DateFolderName)  
   If oFSO.FolderExists(DateFolderName) = True Then  
   ChDir DateFolderName  
   Else  
       If oFSO.FolderExists(ControlFolderName) = False Then  
       MkDir ControlFolderName  
       Else  
           If oFSO.FolderExists(ObjectFolderName) = False Then  
           MkDir ObjectFolderName  
           Else  
               If oFSO.FolderExists(OrganizationFolderName) = False Then  
               MkDir OrganizationFolderName  
               Else  
                   If oFSO.FolderExists(MaterialFolderName) = False Then  
                   MkDir MaterialFolderName  
                   Else  
                       If oFSO.FolderExists(DateFolderName) = False Then  
                       MkDir DateFolderName  
                       Else  
                       ChDir ControlFolderName  
                       End If  
                   End If  
               End If  
           End If  
       End If  
   End If  
   Loop  
   If oFSO.FolderExists(DateFolderName) = True Then  
   ChDir DateFolderName  
   End If  
     
   ' Вывод диалогового окна Сохранить как... с уже введеным именем документа  
   Имя_для_Сохранения = [H18] & " " & [AE16]
   On Error Resume Next  
   Set SH = Workbooks(Имя_для_Сохранения & ".xls")  
   If Not IsEmpty(SH) Then  
   Workbooks(Имя_для_Сохранения & ".xls").Close (True)  
   FName = Application.GetSaveAsFilename(InitialFileName:=Имя_для_Сохранения, _  
   FileFilter:="Excel Files (*.xls), *.xls", _  
   Title:=" Сохранение документа ")  
   Else  
   FName = Application.GetSaveAsFilename(InitialFileName:=Имя_для_Сохранения, _  
   FileFilter:="Excel Files (*.xls), *.xls", _  
   Title:="Сохранение документа")  
   End If  
   If VarType(FName) <> vbBoolean Then Workbooks("Шаблон.xlt").SaveAs FName  
   Windows("Шаблон.xlt").Close (False)  
   Application.ScreenUpdating = True  
End Sub
Выбор перекрывающих участков из массива по условию
 
Всем доброго времени суток!  
Это задача, которую не могу решить уже с неделю! Есть таблица с данными: первый столбец - дата производства работ, второй - отметка начала работ, третий - отметка окончания работ в этот день. Работы по отсыпке грунта и нужно по этим данным отследить на каких участках сколько слоев уложено и т.д.  
Вопрос в том как из этого массива (в примере) собрать таблицу:  
1 слой - участок1 - участок5  
2 слой...  
3 слой...
Обращение к диалогу ввода пароля на открытие книги с помощью макроса
 
Уважаемые эксперты!  
У меня возник вопрос, на который не смог найти ответ нигде.  
В созданном документе нет секретной информации, но свои наработки желания раздавать нет.  
Поэтому для того чтобы им не могли воспользоваться в другом месте, я поставил пароль на открытие файла. Но поскольку приходится им пользоваться часто, каждый раз при открытии вводить пароль, мягко скажем, не удобно.  
Возможно ли каким-то образом заставить макрос, который записан в личной книге и начинает работу сразу после запуска Excel (Auto_Open()), автоматически вводить пароль на открытие документа?
Страницы: 1
Наверх