powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Копирование на другой лист
25 сообщений из 29, страница 1 из 2
Копирование на другой лист
    #36293313
Garnizone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня скоро нервный тик будет от этого vba excel

Почему это работает
Sheets("sheet1").Rows(N).Copy Sheets("sheet2").Rows(N)

это тоже работает
Sheets("sheet1").Cells(1, 1).Copy Sheets("sheet2").Cells(1, 1)

и даже это работает
Sheets("sheet1").Range("A1", "D4").Copy Sheets("sheet2").Range("A1", "D4")

а это не работает?
Sheets("sheet1").Range(Cells(N, M), Cells(N1, M1)).Copy Sheets("sheet2").Range(Cells(N, M), Cells(N1, M1))

и как правильно задать (и копировать) массив ячеек (N, M) (N1, M1)?

Заранее спасибо за ответ
...
Рейтинг: 0 / 0
Копирование на другой лист
    #36293344
Garnizone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нашел вот это, но без Activate не хочет. А очень надо без Activate

Sheets("sheet1").Activate
Set Range1 = Sheets("sheet1").Range(Cells(N, M), Cells(N1, M1))
Range1.Copy Sheets("sheet2").Range(Range1.Cells(1, 1).Address)
...
Рейтинг: 0 / 0
Копирование на другой лист
    #36293382
qwrqwr_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GarnizoneНашел вот это, но без Activate не хочет. А очень надо без Activate

Sheets("sheet1").Activate
Set Range1 = Sheets("sheet1").Range(Cells(N, M), Cells(N1, M1))
Range1.Copy Sheets("sheet2").Range(Range1.Cells(1, 1).Address)выделенное красным - аналогично Application.Cells(N, M) - т.е. диапазон на активном листе.
Ф1Using this property without an object qualifier returns a Range object that represents all the cells on the active worksheet.чтобы обратиться к Cells другого листа - надо конкретно указывать чей это Cells:
Код: plaintext
1.
Sheets("sheet1").Range(Sheets("sheet1").Cells(N, M), Sheets("sheet1").Cells(N1, M1)).Copy 
           Sheets("sheet2").Range(Sheets("sheet2").Cells(N, M), Sheets("sheet2").Cells(N1, M1))
- обычно это все завернуто в With для удобочитаемости.
...
Рейтинг: 0 / 0
Копирование на другой лист
    #36293451
m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
m
Гость
2 ТС , сорри за оффтоп :)
Ха, я и не знал что можно так копировать и вставлять в одну строчку :)

2 qwrqwr
Вы видели, как ребята из майкрософт объясняют как писать макросы? Вот так (выделено желтым):
...
Рейтинг: 0 / 0
Копирование на другой лист
    #36293529
qwrqwr_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
m
Ха, я и не знал что можно так копировать и вставлять в одну строчку :)

конечно можно, с указанием destination, не засоряя/затирая буфер.
кстати, я там именно, что хотел написать в одну строчку - и забыл соединить строки - после Copy, конечно же, надо пробел+нижнее подчеркивание
- но надеюсь, ТС сам догадался.
m 2 qwrqwr
Вот так (выделено желтым):сильно, поржал
...
Рейтинг: 0 / 0
Копирование на другой лист
    #36293571
Garnizone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
qwrqwr_[quot m]
кстати, я там именно, что хотел написать в одну строчку - и забыл соединить строки - после Copy, конечно же, надо пробел+нижнее подчеркивание
- но надеюсь, ТС сам догадался.

Догадался :)
Благодарю за ответ, очень помог.

Мне моя логика почему-то упорно твердила, что все что в скобках у Range должно быть априори в одном листе, видимо я отстал от жизни.

Хороший у вас Ф1, а я все по интернетам, по гуглам, надо бы обновиться.
...
Рейтинг: 0 / 0
Копирование на другой лист
    #36293811
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
qwrqwr_[quot m]
не засоряя/затирая буфер.

справедливости ради - буфер всё-же засоряется. Проверьте - после этой операции вполне можно куда-нибудь запастить копировавшееся. И менеджеры буфера тоже содержимое сохраняют. Т.е. на скорость операции (типа в буфер данные не гоним) этот вариант не сильно влияет.
...
Рейтинг: 0 / 0
Копирование на другой лист
    #36294053
m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
m
Гость
qwrqwr...конечно можно, с указанием destination...
Да, даже в справке написано :)... Вот, видимо, обратная сторона изучения ВБА через макрорекодер на ранних этапах... Когда смотришь не в справку, а на то, что записал чудо-рекодер :)...
Вообщем, наверное нужно советовать всем начинающим учиться не через макрорекодер, а через справку (причем в МС она достаточно полная и доходчивая).
...
Рейтинг: 0 / 0
Копирование на другой лист
    #36294116
Фотография qwrqwr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hugo121
справедливости ради - буфер всё-же засоряется. Проверьте - после этой операции вполне можно куда-нибудь запастить копировавшееся. Мда..
Спасибо, что развеяли иллюзию :)
Правда, мне не удалось "куда-нибудь запастить копировавшееся" . Но то, что буфер, как минимум очищается - это факт.
Еще позабавлялся следующим образом:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Sub Macro1()
On Error Resume Next
Dim s$, dobj As MSForms.DataObject
    Set dobj = New MSForms.DataObject
    dobj.GetFromClipboard: s = dobj.GetText()
    MsgBox s & vbTab & Len(s)

    ' Range("A1:A3").Copy Sheets("Sheet3").Range("B6")

    dobj.GetFromClipboard: s = dobj.GetText()
    MsgBox s & vbTab & Len(s)
Set dobj = Nothing
End Sub
Предварительно скопировав некий текст в буфер - можно запускать этот код многократно - содержимое никуда не девается.

Но раскомментировав строку с Range.Copy происходит интересная весЧь:
ДВАЖДЫ выдается мессиджбокс с содержимым текста буфера - т.е. после Range.Copy он еще там.

Однако если сразу же запустить макрос снова - то буфер уже пустой .
Что там происходит - хз. Недаром доступ через VBA к буферу косой-кривой.
...
Рейтинг: 0 / 0
Копирование на другой лист
    #36294146
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ругается на MSForms.DataObject :( Что надо подключить в References, не подскажете?
...
Рейтинг: 0 / 0
Копирование на другой лист
    #36294151
Фотография qwrqwr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hugo121, Microsoft Forms 2.0 Object Library
...
Рейтинг: 0 / 0
Копирование на другой лист
    #36294170
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Искал, искал, не нашёл...
Не подкинете файлик и где он лежал?
Похоже нужная штука - когда мне надо было из буфера данные кодом извлечь, пришлось монстрообразный код из сети привлечь (работает). Там правда ещё и ClipPut нужно - тут есть такое?
...
Рейтинг: 0 / 0
Копирование на другой лист
    #36294176
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я в экселе ищу, может совсем не там?
...
Рейтинг: 0 / 0
Копирование на другой лист
    #36294192
Фотография qwrqwr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hugo121Я в экселе ищу, может совсем не там?Попробуйте просто добавить новую User Form - ссылка должна появиться автоматически.
...
Рейтинг: 0 / 0
Копирование на другой лист
    #36294217
Фотография qwrqwr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hugo121Там правда ещё и ClipPut нужно - тут есть такое?Насколько мне известно, MSForms.DataObject - единственная кривенькая дорожка из VBA в Clipboard и обратно. Причем, вроде бы только текст позволяет обменивать.
API дает более полный контроль над буфером (как и над всем прочим) - но и кода больше :)

вот пример из Help-a:
The following example demonstrates data movement from a TextBox to a DataObject, from a DataObject to the Clipboard, and from the Clipboard to another TextBox. The PutInClipboard method transfers the data from a DataObject to the Clipboard. The SetText and Paste methods are also used.
To use this example, copy this sample code to the Declarations portion of a form. Make sure that the form contains:
Two TextBox controls named TextBox1 and TextBox2.
A CommandButton named CommandButton1.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Dim MyData As DataObject

Private Sub CommandButton1_Click()
    Set MyData = New DataObject
    
    MyData.SetText TextBox1.Text
    MyData.PutInClipboard

    TextBox2.Paste
End Sub

Private Sub UserForm_Initialize()
    TextBox1.Text = "Move this data to a DataObject, to the Clipboard, then to TextBox2!"
End Sub
...
Рейтинг: 0 / 0
Копирование на другой лист
    #36294225
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, сработало :)
Вот только останется ли эта возможность в файле без формы?
Проверил - не осталась :( Зараза....
...
Рейтинг: 0 / 0
Копирование на другой лист
    #36294244
Фотография qwrqwr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hugo121
Вот только останется ли эта возможность в файле без формы?
Проверил - не осталась :( Зараза....странно... у меня работает без формы.
Можно еще делать позднее связывание на объект MSForms.DataObject через его GUID
Вот тут booby давал пример.
...
Рейтинг: 0 / 0
Копирование на другой лист
    #36294277
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проверил иначе - у меня остаётся, если форму добавить, а потом удалить.
И оно есть, если открыт такой файл.
Если пытаться подключить на чистом файле, который создан с нуля на открытом с нуля Экселе - Nothing
...
Рейтинг: 0 / 0
Копирование на другой лист
    #36294315
Фотография qwrqwr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hugo121Проверил иначе - у меня остаётся, если форму добавить, а потом удалить.
И оно есть, если открыт такой файл.
Если пытаться подключить на чистом файле, который создан с нуля на открытом с нуля Экселе - NothingНу ясно - просто у меня всякие надстройки грузятся с Экселем - там уже есть юзерформы. Поэтому и пункт в ссылках сразу есть.
Пишите жалобы на billgates@micrisoft.com
...
Рейтинг: 0 / 0
Копирование на другой лист
    #36294330
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
qwrqwr
Насколько мне известно, MSForms.DataObject - единственная кривенькая дорожка из VBA в Clipboard и обратно. Причем, вроде бы только текст позволяет обменивать.
API дает более полный контроль над буфером (как и над всем прочим) - но и кода больше :)


Для полноты информации - вот это я нарыл в сети:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
'Option Compare Database
Option Explicit

'am 030305_14:59:26  --begin-- **************
'так как проблема при копировании в буфер тектста
    'в юникода при латинской раскладке
Private Declare Function GetKeyboardLayoutName Lib "user32" _
        Alias "GetKeyboardLayoutNameA" (ByVal pwszKLID As String) As Long
Private Declare Function LoadKeyboardLayout Lib "user32" _
        Alias "LoadKeyboardLayoutA" (ByVal HKL As String, _
                ByVal flags As Long) As Long
Private Const KL_NAMELENGTH =  9 
'am 030305_14:59:26  --end-- **************


Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long
Declare Function CloseClipboard Lib "user32" () As Long
Declare Function GetClipboardData Lib "user32" (ByVal wFormat As Long) As Long
Declare Function GlobalAlloc Lib "kernel32" _
            (ByVal wFlags&, ByVal dwBytes As Long) As Long
Declare Function GlobalLock Lib "kernel32" (ByVal hMem As Long) As Long
Declare Function GlobalUnlock Lib "kernel32" (ByVal hMem As Long) As Long
Declare Function GlobalSize Lib "kernel32" (ByVal hMem As Long) As Long
Declare Function lstrcpy Lib "kernel32" (ByVal lpString1 As Any, _
            ByVal lpString2 As Any) As Long
Declare Function lstrcpy2 Lib "kernel32" Alias "lstrcpy" _
        (ByVal lpString1 As Any, ByRef lpString2 As Byte) As Long
Declare Function EmptyClipboard Lib "user32" () As Long
Declare Function SetClipboardData Lib "user32" (ByVal wFormat As Long, _
            ByVal hMem As Long) As Long

Public Const GHND = &H42
Public Const MAXSIZE =  4096 
Public Const CF_TEXT =  1 

 Function ClipBoard_GetData() As String
         Dim hClipMemory As Long
         Dim lpClipMemory As Long
         Dim MyString As String
         Dim RetVal As Long
         Dim lSize As Long
         If OpenClipboard( 0 &) =  0  Then
            MsgBox "Cannot open Clipboard. Another app. may have it open"
            Exit Function
         End If

         ' Obtain the handle to the global memory
         ' block that is referencing the text.
         hClipMemory = GetClipboardData(CF_TEXT)
         If hClipMemory =  0  Then
            MsgBox "Could not allocate memory"
            GoTo OutOfHere
         End If
         'am 040610 - размер нужно узнать
          lSize = GlobalSize(hClipMemory)

         ' Lock Clipboard memory so we can reference
         ' the actual data string.
         lpClipMemory = GlobalLock(hClipMemory)

         If lpClipMemory <>  0  Then
            MyString = Space$(lSize)
            RetVal = lstrcpy(MyString, lpClipMemory)
            RetVal = GlobalUnlock(hClipMemory)

            ' Peel off the null terminating character.
            MyString = Mid(MyString,  1 , InStr( 1 , MyString, Chr$( 0 ),  0 ) -  1 )
         Else
            MsgBox "Could not lock memory to copy string from."
         End If

OutOfHere:

         RetVal = CloseClipboard()
         ClipBoard_GetData = MyString

      End Function


Function ClipBoard_SetData(MyString As String)
         Dim hGlobalMemory As Long, lpGlobalMemory As Long
         Dim hClipMemory As Long, x As Long

         ' Allocate movable global memory.
         '-------------------------------------------
         hGlobalMemory = GlobalAlloc(GHND, Len(MyString) +  1 )

         ' Lock the block to get a far pointer
         ' to this memory.
         lpGlobalMemory = GlobalLock(hGlobalMemory)

         ' Copy the string to this global memory.
         lpGlobalMemory = lstrcpy(lpGlobalMemory, MyString)
         'lpGlobalMemory = lstrcpy2(lpGlobalMemory, b(0))

         ' Unlock the memory.
         If GlobalUnlock(hGlobalMemory) <>  0  Then
            MsgBox "Could not unlock memory location. Copy aborted."
            GoTo OutOfHere2
         End If

         ' Open the Clipboard to copy data to.
         If OpenClipboard( 0 &) =  0  Then
            MsgBox "Could not open the Clipboard. Copy aborted."
            Exit Function
         End If

         ' Clear the Clipboard.
         x = EmptyClipboard()


        'am 030305_15:16:05  --begin-- **************
        'переключаемся на русскую раскладку чтобы не иметь
        'проблем с русским текстом в буфере
        '(некорректно понимается кодовая страница)
        Dim sOldLang As String
        sOldLang = switchLang("00000419")
        'am 030305_15:16:05  --end-- **************

         ' Copy the data to the Clipboard.
         hClipMemory = SetClipboardData(CF_TEXT, hGlobalMemory)
OutOfHere2:
         If CloseClipboard() =  0  Then
            MsgBox "Could not close Clipboard."
         End If
        'am 030305_15:17:26  --begin-- **************
        'возвращаем раскладку на место
        If Len(sOldLang) >  0  Then _
            sOldLang = switchLang(sOldLang)
        'am 030305_15:17:26  --end-- **************

End Function
        
Private Function getCurrLang() As String
    Dim layoutname As String * KL_NAMELENGTH
    Dim z As Long
    z = GetKeyboardLayoutName(layoutname)
    If z =  0  Then
        getCurrLang = ""
    Else
        getCurrLang = StrZ(layoutname)
    End If
End Function
'Переключает на указанную sNewLang раскладку - возвращает старую раскладку
'am 030305_15:13:39
Private Function switchLang(sNewLang As String) As String
'"00000419" - русская
'"00000409" - латинская
    switchLang = getCurrLang
    If StrComp(switchLang, sNewLang) <>  0  Then
        LoadKeyboardLayout sNewLang,  1 
    End If
End Function
'v_1.0.0 990630
Public Function StrZ(par As String) As String
Dim nSize As Long, i As Long, Rez As String
   nSize = Len(par)
   i = InStr( 1 , par, Chr( 0 )) -  1 
   If i > nSize Then i = nSize
   If i <  0  Then i = nSize
   StrZ = Mid(par,  1 , i)
End Function


А вот так применил:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
Sub setfilter()
Dim crdn As String
Dim r As String
Dim ac_row As String

With Application
    .ScreenUpdating = False
 ac_row = CStr(ActiveCell.Row)
 crdn = ClipBoard_GetData
         If crdn = "" Then
   '         MsgBox "Could not allocate memory2"
   '         MsgBox "crdn= " & crdn
            GoTo OutOfHere4
         End If
' MsgBox "MyData= " & ClipBoard_GetData
' crdn = ClipBoard_GetData
' If Len(crdn) = 18 Then
' crdn = Left(crdn, Len(crdn) - 2)
crdn = Left(crdn,  16 )
' End If
    Columns("D:D").Select
    Range("D2").Activate
    Selection.AutoFilter Field:= 1 , Criteria1:=crdn
  '   MsgBox "crdn= " & crdn
  

ActiveWindow.SmallScroll Down:=- 15000 

Cells(ac_row,  4 ).Activate
Cells(ac_row,  4 ).Select

OutOfHere4:
   .ScreenUpdating = True
 End With
End Sub

Извините за корявость, взял, как есть в рабочем файле. Вот прямо так и лежит одно под другим в модуле, работает... ставит автофильтр по значению из буфера - удобно, по клику по кнопке показывает только те значения, которые соответствуют скопированному в буфер.
...
Рейтинг: 0 / 0
Копирование на другой лист
    #36294373
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Похоже, что всё это можно было сделать проще с MSForms.DataObject, мне всего лишь надо было извлечь из буфера значение (crdn = ClipBoard_GetData, аналог dobj.GetFromClipboard), но тогда такой инфы не нарыл... переделывать не буду, но в следующий раз попробую обязательно.
...
Рейтинг: 0 / 0
Копирование на другой лист
    #36295082
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Погонял немного эти MSForms.DataObject - работает отвратительно. Если взять в буфер на стороне, или его же кодом - ОК. Но если брать Ctrl+C из таблицы, и затем кодом пытаться из буфера достать - дулю. Такое впечатление, что это разные буферА...
Мне такое не подходит, я остаюсь на том монстре.
...
Рейтинг: 0 / 0
Копирование на другой лист
    #36295119
m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
m
Гость
Hugo121Но если брать Ctrl+C из таблицы, и затем кодом пытаться из буфера достать - дулю. Такое впечатление, что это разные буферА...
А в чем дуля проявляется ? В куче непонятных символов ?
Вот так я переношу данные из Ctrl+C в массив:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
Public Sub RetFrClipB(ContArr() As Long)
    Dim DataObj As New MSForms.DataObject
    Dim SData As String, tmpD As String, tmpR As String
    Dim length As Integer, elNumberS As Integer
    Dim nRows As Integer, nColumns As Integer
    Dim i As Integer, j As Integer, x As Byte, eCounter As Byte
    
    DataObj.GetFromClipboard
    SData = DataObj.GetText
    nRows = CountL(SData, Chr( 13 ))
    nColumns = (CountL(SData, Chr( 9 )) + nRows) / nRows
    
    tmpD = SData
    
    ReDim Preserve ContArr( 1  To nColumns,  1  To nRows)
    
    Do Until Len(tmpD) =  0 
    j = j +  1 
    x =  1 
    tmpR = Mid(tmpD,  1 , InStr(tmpD, Chr( 10 )))
        For i =  1  To nColumns -  1 
        length = InStr(tmpR, Chr( 9 )) -  1 
        ContArr(x, j) = CInt(Mid(tmpR,  1 , length))
        x = x +  1 
        tmpR = Mid(tmpR, length +  2 )
        Next i
    length = InStr(tmpR, Chr( 13 )) -  1 
    ContArr(x, j) = CLng(Mid(tmpR,  1 , length))
    tmpD = Mid(tmpD, InStr(tmpD, Chr( 13 )) +  2 )
    
    Loop

End Sub

Хотя есть одно но, если не ошибаюсь [давно делал], все ячейки в скопированом массиве должны быть заполнены.
...
Рейтинг: 0 / 0
Копирование на другой лист
    #36295158
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
m
А в чем дуля проявляется ? В куче непонятных символов ?
Да нет, просто пусто :)
Ваш код поизучаю на досуге, может куда и сгодится.
...
Рейтинг: 0 / 0
Копирование на другой лист
    #36295177
m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
m
Гость
Hugo121
Да нет, просто пусто :)
Ваш код поизучаю на досуге, может куда и сгодится.

Странно :)... Вообщем я запускал этот код сразу после нажатия CTRL+C, когда выделение (муравьи) было активным...
...
Рейтинг: 0 / 0
25 сообщений из 29, страница 1 из 2
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Копирование на другой лист
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]