Страницы: 1
RSS
Макрос переноса данных с листа открытой книги на скрытый лист другой открытой книги при запароленной книге, Как изменить макрос? ПОМОГИИИТЕ!!!
 
Всем привет!
суть вопроса:
нужно, чтоб данные из одной открытой книги переносились в другую открытую, на лист, который скрыт.
книга при этом защищена.
пробовал через простую запись макроса - не получилось)

Помогите пожалуйста!

вот пример:
Sub Pmix()
'
' Pmix Макрос
'

'
   ActiveWorkbook.Unprotect
   Sheets("PMix").Visible = True
   Windows("12345.xls").Activate
   Cells.Select
   Selection.Copy
   Windows("DSA_V5.5.xlsm").Activate
   Cells.Select
   ActiveSheet.Paste
   Sheets("PMix").Select
   ActiveWindow.SelectedSheets.Visible = False
   Application.CutCopyMode = False
   ActiveWorkbook.Protect Structure:=True, Windows:=False
   Sheets("MHP").Select
End Sub
Изменено: Олег Большаков - 20.11.2022 19:00:17 (нашел ошибки))
 
В общем, я продвинулся дальше) и теперь наткнулся на ошибку метод paste из класса worksheet завершен неверно, что ему не так?
<pre class="bxhtmled-code">Sub Pmix()
'
' Pmix Макрос
'

'
  ActiveWorkbook.Unprotect
  Sheets("PMix").Visible = True
  Windows("12345.xls").Activate
  Cells.Select
  Selection.Copy
  Windows("DSA_V5.5.xlsm").Activate
  Cells.Select
  ActiveSheet.Paste
  Sheets("PMix").Select
  ActiveWindow.SelectedSheets.Visible = False
  Application.CutCopyMode = False
  ActiveWorkbook.Protect Structure:=True, Windows:=False
  Sheets("MHP").Select
End Sub<span id="bx-cursor-node"> </span>
</pre>
Изменено: Олег Большаков - 21.11.2022 10:25:04
 
1. код на форуме нужно правильно оформлять, см. картинку ниже
2. Плохо, что вы в своём коде не указываете имя листа С которого вы копируете данные. К большому несчастью в файле Excel может быть тысячи листов
3. Попробуйте этот код, вдруг сработает.

Код
Sub PMix()
    'сначала очистим буфер, чтобы там точно ничего лишнего не было
    Application.CutCopyMode = False
    Windows("12345.xls").Activate
    ActiveSheet.UsedRange.Copy
    Windows("DSA_V5.5.xlsm").Activate
    ActiveWorkbook.Unprotect Password:="123"
    Sheets("PMix").Visible = -1
    Sheets("PMix").Select
    ActiveSheet.Cells.Clear
    Range("A1").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Sheets("PMix").Visible = 2
    ActiveWorkbook.Protect Password:="123", structure:=True, Windows:=True
    Sheets("MHP").Select
End Sub


Изменено: New - 21.11.2022 06:19:26
 
Цитата
написал:
'сначала очистим буфер, чтобы там точно ничего лишнего не было    Application.CutCopyMode = False    Windows("12345.xls").Activate    ActiveSheet.UsedRange.Copy    Windows("DSA_V5.5.xlsm").Activate    ActiveWorkbook.Unprotect Password:="123"    Sheets("PMix").Visible = -1    Sheets("PMix").Select    ActiveSheet.Cells.Clear    Range("A1").Select    ActiveSheet.Paste    Application.CutCopyMode = False    Sheets("PMix").Visible = 2    ActiveWorkbook.Protect Password:="123", structure:=True, Windows:=True    Sheets("MHP").Select
Про вставку кода понял, спасибо!
все равно та же ошибка(
 
Олег, Вы пытаетесь вставить лист xls в лист xlsm. Там разное количество ячеек

Цитата
Олег Большаков написал:
Про вставку кода понял, спасибо!
Так поправьте тогда  :D
Изменено: _Boroda_ - 21.11.2022 10:11:50
Скажи мне, кудесник, любимец ба’гов...
 
что то не получается(
 
Попробуйте вот так
Код
Sub tt()
    Windows("DSA_V5.5.xlsm").Activate
    ActiveWorkbook.Unprotect Password:="123"
    With Sheets("PMix")
        .Visible = -1
        .Select
        .Cells.Clear
        Windows("12345.xls").ActiveSheet.UsedRange.Copy
        .Range("A1").Select
        .Paste
        Application.CutCopyMode = False
        .Visible = 2
    End With
    ActiveWorkbook.Protect Password:="123", structure:=True, Windows:=True
End Sub

Скажи мне, кудесник, любимец ба’гов...
 
Не, даже вот так, наверное
Код
Sub ttt()
    Windows("21.xlsm").Activate
    ActiveWorkbook.Unprotect Password:="123"
    With Sheets("PMix")
        .Cells.Clear
        Windows("22.xlsm").ActiveSheet.UsedRange.Copy .Range("A1")
    End With
    ActiveWorkbook.Protect Password:="123", structure:=True, Windows:=True
End Sub
Скажи мне, кудесник, любимец ба’гов...
 
И ещё вариант.
Код
Sub PMix()
'   Windows("12345.xls").Activate
'   Cells.Select
'   Selection.Copy
'   Windows("DSA_V5.5.xlsm").Activate
'    Workbooks("12345.xls").Activate
    Dim arr As Variant
    arr = ActiveSheet.UsedRange

   Workbooks("DSA_V5.5.xlsm").Unprotect Password:="123"
'   Sheets("PMix").Visible = -1
'   Sheets("PMix").Select
    Sheets("PMix").Cells(1, 1).Resize(UBound(arr, 1), UBound(arr, 2)) = arr
'   Sheets("PMix").Visible = 2
   Workbooks("DSA_V5.5.xlsm").Protect Password:="123", structure:=True, Windows:=True
   Sheets("MHP").Select
End Sub
 
Получилось! спасибо огромное!!!
 
Цитата
написал:
Windows("DSA_V5.5.xlsm").Activate    ActiveWorkbook.Unprotect Password:="123"    With Sheets("PMix")        .Visible = -1        .Select        .Cells.Clear        Windows("12345.xls").ActiveSheet.UsedRange.Copy        .Range("A1").Select        .Paste        Application.CutCopyMode = False        .Visible = 2    End With    ActiveWorkbook.Protect Password:="123", structure:=True, Windows:=True
вот этот вариант работает!)
 
_Boroda_, вот эта тема)
Windows("DSA_V5.5.xlsm").Activate
можно ли в этой строке сделать название файла на нестатичное?
 
А в какой книге макрос? И какая активна в момент запуска?
Скажи мне, кудесник, любимец ба’гов...
 
_Boroda_, макрос в книге, имя которой будет переменной, начинаться будет с "DSA_V*******************"
Именно она и активна в момент запуска макроса
 
Тогда попробуйте что-то типа такого
Код
Sub ttt()
    With ThisWorkbook
        .Unprotect Password:="123"
        With .Sheets("PMix")
            .Cells.Clear
            Windows("22.xlsm").ActiveSheet.UsedRange.Copy .Range("A1")
        End With
        .Protect Password:="123", structure:=True, Windows:=True
    End With
End Sub
Скажи мне, кудесник, любимец ба’гов...
 
_Boroda_, Да, все работает, спасибо за помощь!
убрал только букву m в "22.xlsm", файл просто xls
Страницы: 1
Наверх