Уважаемые господа Программисты! У меня вопрос, как можно скопировать данные с защищенного листа только к "открытым" ячейкам другого файла? К примеру, у меня имеется файлы "Регион" и "Общий". Применял макросы но они дали ошибку - файл защищен. Ни как не смог скопировать значения листа "Сводный" файла Регион только ""открытым" ячейкам листа "Все" файла "Общий".
Уважаемые господа Программисты! У меня вопрос, как можно скопировать данные с защищенного листа только к "открытым" ячейкам другого файла? К примеру, у меня имеется файлы "Регион" и "Общий". Применял макросы но они дали ошибку - файл защищен. Ни как не смог скопировать значения листа "Сводный" файла Регион только ""открытым" ячейкам листа "Все" файла "Общий".maryo
_Boroda_, не вставить ссылку, а просто переносить только значения со сводного в пустой лист имеющий одинаковую структуру и защищенные ячейки. Здесь просто макрос помогает.
_Boroda_, не вставить ссылку, а просто переносить только значения со сводного в пустой лист имеющий одинаковую структуру и защищенные ячейки. Здесь просто макрос помогает.maryo
Сообщение отредактировал maryo - Среда, 20.06.2018, 09:25
SLAVICK, касательно LibreOffice, просто с "верхушки" отправили эксель файл. Я свои сводные данные состоящий из формул должен переносить на их ни эксель файл. А касательно макроса попробую.
SLAVICK, касательно LibreOffice, просто с "верхушки" отправили эксель файл. Я свои сводные данные состоящий из формул должен переносить на их ни эксель файл. А касательно макроса попробую.maryo
Сообщение отредактировал maryo - Среда, 20.06.2018, 09:35
а зачем на пустом листе защита? - снимите ее. КАК? - тут не спрашивайте - запрещено обсуждать по правилам форума - скажу только что в инете есть куча инфы по этому вопросу.
не этот макрос не поможет - он может скопировать значения С защищенного листа, но не В Дам подсказку по подмене значений - копайте структуру файла, и xml листа:
а зачем на пустом листе защита? - снимите ее. КАК? - тут не спрашивайте - запрещено обсуждать по правилам форума - скажу только что в инете есть куча инфы по этому вопросу.
не этот макрос не поможет - он может скопировать значения С защищенного листа, но не В Дам подсказку по подмене значений - копайте структуру файла, и xml листа:
maryo, данные с защищенного листа? да пожалуйста, хоть с закрытой книги [vba]
Код
Option Explicit Const Filename$ = "C:\[путь к Excel'евскому файлу с данными]"
Sub DownloadData() Dim sSQL$: sSQL = "select * from [Лист1$]" 'имя защищенного листа с данными и "$" Dim CON As Object: Set CON = ExcelConnect(Filename) Dim RST As Object: Set RST = CreateObject("ADODB.Recordset") Dim MyArr() RST.Open Source:=sSQL, ActiveConnection:=CON If Not RST.EOF Then With ActiveSheet 'выгружаем все .Range("A1").CopyFromRecordset RST
' а можно конкретную ячейку выгрузить, например ' MyArr = RST.GetRows ' .Range("A1") = MyArr(3, 4) '4-я строка, 5-й столбец End With Else ' Если нет данных то вывод сообщения: MsgBox "Нет данных удовлетворяющих условиям.", vbInformation + vbOKOnly, "Ошибка" End If Set RST = Nothing Set CON = Nothing End Sub
Function ExcelConnect(ByVal PatchFile$, Optional TableHeader As Boolean = False) As Object 'TableHeader - Отметить True, если есть заголовки у таблицы и надо к столбцам обращаться по имени, ' иначе к столбцам можно обращаться F1, F2, F3 и т.д. Dim VersionFile$ Dim strCon$ Select Case Split(PatchFile, ".")(UBound(Split(PatchFile, "."))) Case "xls": VersionFile = "Excel 8.0" Case "xlsb": VersionFile = "Excel 12.0" Case "xlsm": VersionFile = "Excel 12.0 Macro" Case "xlsx": VersionFile = "Excel 12.0 Xml" End Select strCon = "Provider=" & IIf(Val(Application.Version) > 11, "Microsoft.ACE.OLEDB.12.0", "Microsoft.Jet.OLEDB.4.0") & ";" & _ "Data Source=""" & PatchFile & """;" & _ "Extended Properties=""" & VersionFile & ";HDR=" & IIf(TableHeader, "YES", "NO") & """;" Set ExcelConnect = CreateObject("ADODB.Connection") ExcelConnect.Open strCon End Function
[/vba]
maryo, данные с защищенного листа? да пожалуйста, хоть с закрытой книги [vba]
Код
Option Explicit Const Filename$ = "C:\[путь к Excel'евскому файлу с данными]"
Sub DownloadData() Dim sSQL$: sSQL = "select * from [Лист1$]" 'имя защищенного листа с данными и "$" Dim CON As Object: Set CON = ExcelConnect(Filename) Dim RST As Object: Set RST = CreateObject("ADODB.Recordset") Dim MyArr() RST.Open Source:=sSQL, ActiveConnection:=CON If Not RST.EOF Then With ActiveSheet 'выгружаем все .Range("A1").CopyFromRecordset RST
' а можно конкретную ячейку выгрузить, например ' MyArr = RST.GetRows ' .Range("A1") = MyArr(3, 4) '4-я строка, 5-й столбец End With Else ' Если нет данных то вывод сообщения: MsgBox "Нет данных удовлетворяющих условиям.", vbInformation + vbOKOnly, "Ошибка" End If Set RST = Nothing Set CON = Nothing End Sub
Function ExcelConnect(ByVal PatchFile$, Optional TableHeader As Boolean = False) As Object 'TableHeader - Отметить True, если есть заголовки у таблицы и надо к столбцам обращаться по имени, ' иначе к столбцам можно обращаться F1, F2, F3 и т.д. Dim VersionFile$ Dim strCon$ Select Case Split(PatchFile, ".")(UBound(Split(PatchFile, "."))) Case "xls": VersionFile = "Excel 8.0" Case "xlsb": VersionFile = "Excel 12.0" Case "xlsm": VersionFile = "Excel 12.0 Macro" Case "xlsx": VersionFile = "Excel 12.0 Xml" End Select strCon = "Provider=" & IIf(Val(Application.Version) > 11, "Microsoft.ACE.OLEDB.12.0", "Microsoft.Jet.OLEDB.4.0") & ";" & _ "Data Source=""" & PatchFile & """;" & _ "Extended Properties=""" & VersionFile & ";HDR=" & IIf(TableHeader, "YES", "NO") & """;" Set ExcelConnect = CreateObject("ADODB.Connection") ExcelConnect.Open strCon End Function