Скопировать сгруппированные данные (объект) из исходного листа (защищенного) в другой - PullRequest
0 голосов
/ 16 апреля 2019

Я новичок в vba и пытаюсь написать код, копирующий некоторые групповые данные из защищенной книги в новую книгу.

В моем исходном листе есть список сгруппированных данных с некоторыми столбцами, такими как СТРАНА, ВЫХОД, ВЫИГРЫШ, ПОТЕРЯ. Субъект страны сгруппирован по регионам. Таким образом, в каждой стране переменное количество регионов с subRevenue, subWIN, subLOSS.

Что я ожидаю: для определенной группы объектов страны (например, ГЕРМАНИЯ и ЯПОНИЯ) я хочу скопировать эти данные с их подданными (регионами) в новую рабочую книгу.

Кто-нибудь может дать мне общий пример или полезные функции?

Заранее спасибо! (VBA Noob)

1 Ответ

1 голос
/ 17 апреля 2019

Так что вот с чего начать.

Во-первых, поскольку лист защищен, вам необходимо снять защиту, прежде чем можно будет что-либо копировать. Приведенный ниже код показывает вам, как это сделать, и использует strPassword в качестве переменной, содержащей пароль. Поскольку в вашем случае лист уже защищен, вы должны сначала снять с него защиту, затем выполнить операцию копирования, а затем снова защитить ее.

В общем случае вы можете использовать range.copy с range.pastespecial для копирования данных в любое место. Для копирования в новую рабочую книгу вы можете использовать Workbooks.add, в противном случае просто укажите путь к файлу другой рабочей книги

Sub YourSub()
Dim ws As Worksheet: Set ws =Worksheets("YourSheet")
Dim strPassword As String: strPassword = "YourPassword"
Set NewBook = Workbooks.Add ' OR the workbook path

ws.Unprotect Password:= strPassword

  ws.Range("A1:AA100").Copy 
  NewBook.Worksheets("Sheet1").Range("A1").PasteSpecial (xlPasteValues)
  NewBook.SaveAs FileName:= ' Insert FilePath/  FileName here

ws.Protect Password:= strPassword
End Sub

Это некоторая общая информация о том, как вы собираетесь копировать диапазоны из защищенной рабочей книги в другую рабочую книгу. Чтобы сделать это для определенных стран, вы можете создать таблицу или использовать именованные диапазоны (используя менеджер имен или в самом VBA). Затем вы можете указать конкретные диапазоны, используя if.. elseif.. else.. end if или метод select case, при этом ваш список дел указывает на диапазон, содержащий все страны, которые будут скопированы.

Надеюсь, это было полезно в качестве краткого обзора

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...