Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Не работает метод Copy (Worksheets), но всё очень странно. / 25 сообщений из 44, страница 1 из 2
09.07.2014, 03:26
    #38691305
Andrey.Russe
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает метод Copy (Worksheets), но всё очень странно.
Написал программу в Ексель 2007.
Проверил работает.

Выяснилось позже, что программа будет работать на Ексель 2010.
Поставил у себя Ексель 2010 (т.е. на компьютере 2010 и 2007 Ексель), проверил - работает.

Поставил на другой чистый компьютер Ексель 2010 (т.е. тут только Ексель 2010 и больше ничего) - проверил работает.

Привез программу к заказчику - не работает. единственная разница - у меня русский Виндоус 8, у него немецкий Windows 7

ошибки идут просто ужасно странные, например:


Public Function IsFilePresent(FullPathName As String) As Boolean

If Dir(FullPathName) <> "" Then тут ошибка

говорит, что Bad file name на "E:\macro\macro_2014.xlsm" и вызывает Debug
опытным путем установил, что именно комбинация E: (такого диска нет) вызывает ошибку, остальное без проблем.

на верный путь "C:\macro\macro_2014.xlsm" отрабатывает нормально

и на неверный путь (такого диска нет) "F:\macro\macro_2014.xlsm" отрабатывает нормально - выдает моё сообщение о неверном пути.

Но это же стринг. какая ему разница какие буквы внутри?


ок, пока поставил верный путь и пошли дальше.....




потом эта часть кода (мне необходимо из одной книги в другую скопировать полностью лист, включая все свойства и макросы листа):

Dim Source As Excel.Workbook
Dim Target As Excel.Worksheet
Dim SourceL As Excel.Worksheet


Set Source = Workbooks.Open(MacroPath, , True, , "111")
Set SourceL = Source.Worksheets(SheetName)

SourceL.Copy After:=Target ОШИБКА ТУТ



говорит - Run time error 1004
method copy of object _worksheet failed

проверяю синтаксис, проверяю параметры - всё отлично.
согласно всем интернет ресурсам синтаксис верный и других вариантов нет.

Как тут переписать - не знаю. тем более на моих двух ПК всё работает.


Что было сделано для поиска проблемы:

1) отрубил антивирус
2) поставил одинаковый Ексель 2010
3) убрал кириллицу из программы - только английский язык
4) запустил у него Ексель с правами администратора

идей больше нет, а программа не работает.
Буду рад помощи.
...
Рейтинг: 0 / 0
09.07.2014, 03:41
    #38691306
Andrey.Russe
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает метод Copy (Worksheets), но всё очень странно.
Проверил набор библиотек - всё одинаково на моём и компьютере заказчика.
...
Рейтинг: 0 / 0
09.07.2014, 09:04
    #38691411
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает метод Copy (Worksheets), но всё очень странно.
Andrey.RusseIf Dir(FullPathName) <> "" Then тут ошибка
говорит, что Bad file name на "E:\macro\macro_2014.xlsm" и вызывает Debugкакой еще debug?

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

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
Dim Source As Excel.Workbook
    Dim Target As Excel.Worksheet
    Dim SourceL As Excel.Worksheet

    Set Source = Workbooks.Open(MacroPath, , True, , "111")
    Set SourceL = Source.Worksheets(SheetName)
 
    SourceL.Copy After:=Target

я не нашел тут инициализацию Target, и в чем вопрос?
...
Рейтинг: 0 / 0
09.07.2014, 12:15
    #38691729
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает метод Copy (Worksheets), но всё очень странно.
Andrey.Russe,

1. Правильнее так: If Dir(FullPathName, 16) <> "" Then. Не факт, что в Вашем случае избавит от ошибки, конечно. Если верить Вашему описанию.
2. Синтаксис, может и правильный, но может стоит справку почитать? Там явно указывается, что аргумент After - это существующий лист в книге, после которого будет вставлен скопированный лист. А у Вас этот аргумент равен Nothing, т.к. Вы его лишь объявили, но не присвоили никакого значения.
Код: vbnet
1.
SourceL.Copy After:=Source.Worksheets(Source.Worksheets.Count)
...
Рейтинг: 0 / 0
09.07.2014, 12:41
    #38691776
Andrey.Russe
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает метод Copy (Worksheets), но всё очень странно.
Shocker.ProAndrey.RusseIf Dir(FullPathName) <> "" Then тут ошибка
говорит, что Bad file name на "E:\macro\macro_2014.xlsm" и вызывает Debugкакой еще debug?

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


мой путь оказался для тестирования - заранее неверный путь. на моей машине когда вводишь неверный путь сообщается - неверный путь, там тоже так же происходит во всех случаях кроме одного случая, в случае диска Е: - вызывается дебаггер.

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
Dim Source As Excel.Workbook
    Dim Target As Excel.Worksheet
    Dim SourceL As Excel.Worksheet

    Set Source = Workbooks.Open(MacroPath, , True, , "111")
    Set SourceL = Source.Worksheets(SheetName)
 
    SourceL.Copy After:=Target

я не нашел тут инициализацию Target, и в чем вопрос?
стер нечаянно вместе с лишним.


Dim Source As Excel.Workbook
Dim Target As Excel.Worksheet
Dim SourceL As Excel.Worksheet


Set Target = Workbooks(ClientName).Worksheets(SheetName)
Set Source = Workbooks.Open(MacroPath, , True, , "111")
Set SourceL = Source.Worksheets(SheetName)
'Копирование листа Клиент из книги макроса в книгу Клиента
SourceL.Copy After:=Target
...
Рейтинг: 0 / 0
09.07.2014, 12:43
    #38691781
Andrey.Russe
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает метод Copy (Worksheets), но всё очень странно.
The_PristAndrey.Russe,

1. Правильнее так: If Dir(FullPathName, 16) <> "" Then. Не факт, что в Вашем случае избавит от ошибки, конечно. Если верить Вашему описанию.
2. Синтаксис, может и правильный, но может стоит справку почитать? Там явно указывается, что аргумент After - это существующий лист в книге, после которого будет вставлен скопированный лист. А у Вас этот аргумент равен Nothing, т.к. Вы его лишь объявили, но не присвоили никакого значения.
Код: vbnet
1.
SourceL.Copy After:=Source.Worksheets(Source.Worksheets.Count)



Это я уже игрался.
И Before и After являются необязательными аргументами.
пробовал оба аргумента - результат один - у меня работает, у них не работает.
...
Рейтинг: 0 / 0
09.07.2014, 12:48
    #38691789
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает метод Copy (Worksheets), но всё очень странно.
Гм, попробуйте почитать этот топик , там с похожей проблемой боролись
...
Рейтинг: 0 / 0
09.07.2014, 12:55
    #38691796
Andrey.Russe
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает метод Copy (Worksheets), но всё очень странно.
Shocker.ProГм, попробуйте почитать этот топик , там с похожей проблемой боролись


Это уже читал. Там проблемы с буфером. :(
А у меня копируется один лист с 5тью строчками.
не мой случай. У него копируется, копируется, а потом ломается.
А у меня при первом обращении к методу сразу ошибка.
...
Рейтинг: 0 / 0
09.07.2014, 12:59
    #38691801
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает метод Copy (Worksheets), но всё очень странно.
Andrey.Russe,

Не пробовали почитать про методы Open? :-) Вы же сами открываете книгу в режиме "Только чтение". Поэтому лист и не копируется.
Set Source = Workbooks.Open(MacroPath, , False, , "111")
...
Рейтинг: 0 / 0
09.07.2014, 13:00
    #38691804
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает метод Copy (Worksheets), но всё очень странно.
это ж источник, а не приемник...
...
Рейтинг: 0 / 0
09.07.2014, 13:03
    #38691813
Andrey.Russe
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает метод Copy (Worksheets), но всё очень странно.
The_PristAndrey.Russe,

Не пробовали почитать про методы Open? :-) Вы же сами открываете книгу в режиме "Только чтение". Поэтому лист и не копируется.
Set Source = Workbooks.Open(MacroPath, , False, , "111")


конечно же читал про этот метод. мне важно, чтобы в этом файле источника клиент ничего не портил, потому как там лежат оригиналы всех шаблонов. поэтому открываю в режиме чтения и кидаю ему в рабочий файл методом копирования, при этом там ничего и никогда своим макросом не меняю.

но тем не менее даже если предположить, что Вы правы, то не могу ответить на вопрос.
Почему у меня работает, а у него не работает.
...
Рейтинг: 0 / 0
09.07.2014, 13:52
    #38691904
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает метод Copy (Worksheets), но всё очень странно.
Andrey.Russe,

Что скрывается под ClientName? И под SheetName?
Смотрите в чем еще может быть проблема: Т.к. SheetName не меняется, то Вы пытаетесь скопировать в другую книгу лист с тем же именем, что там уже есть. Возможно, Excel автоматом не добавляет постфикс в виде номер к имени листа.

Ну и чтобы Вам можно было быстрее помочь лучше видеть не обрывки кодов, а весь код.
...
Рейтинг: 0 / 0
09.07.2014, 13:53
    #38691906
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает метод Copy (Worksheets), но всё очень странно.
Еще вариант: Вы копируете лист из книги формата 2007 Excel в книгу, имеющую формат более ранних версий(2003 и меньше). Т.к. кол-во строк и столбцов в таких листах различается - копирование невозможно.
...
Рейтинг: 0 / 0
09.07.2014, 21:52
    #38692408
Andrey.Russe
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает метод Copy (Worksheets), но всё очень странно.
The_PristAndrey.Russe,

Что скрывается под ClientName? И под SheetName?
Смотрите в чем еще может быть проблема: Т.к. SheetName не меняется, то Вы пытаетесь скопировать в другую книгу лист с тем же именем, что там уже есть. Возможно, Excel автоматом не добавляет постфикс в виде номер к имени листа.

Ну и чтобы Вам можно было быстрее помочь лучше видеть не обрывки кодов, а весь код.

Был сегодня в другом месте и на немецкой винде, с немецким офисом - на трех компьютерах пробовал - везде моя программа работает.

Итак я получил разрешение и снес Microsoft Office у заказчика. Поставил свой Ексель 2010 - всё равно не работает.
Последняя надежда умерла. Ексель запускаю с правами администратора.

Идей нет. Считаю проблему надо искать в компьютере, а не в программе. Но тем не менее выкладываю текст функции по копированию листов целиком.


SheetName="client"
MacroPath="C:\macro\macro_2014.xlsm"
ClientName="C:\doc\client2.xlsm"

Public Function CopySheet(SheetName As String) As Boolean

Dim Source As Excel.Workbook
Dim Target As Excel.Worksheet
Dim SourceL As Excel.Worksheet

'ïðîâåðèòü íàëè÷èå ëèñòà
If IsSheetPresent(SheetName) Then
'ëèñò åñòü
CopySheet = True
Else
CopySheet = False
'ëèñòà íåò - ñîçäàòü íîâûé
'ñîçäàòü ëèñò
Set Sh = Sheets.Add
Sh.Name = SheetName
'êóäà êîïèðîâàòü
Set Target = Workbooks(ClientName).Worksheets(SheetName)
'ñîõðàíÿåì ïîðÿäêîâûé íîìåð ëèñòà
IndexTarget = Target.Index
'îòêðûâàåì ôàéë
Set Source = Workbooks.Open(MacroPath, , True, , "111")
Set SourceL = Source.Worksheets(SheetName)
'Êîïèðîâàíèå ëèñòà Êëèåíò èç êíèãè ìàêðîñà â êíèãó Êëèåíòà
SourceL.Copy After:=Target ОШИБКА ЗДЕСЬ
'×òîáû íå ïîÿâëÿëèñü ïðåäóïðåæäàþùèå ñîîáùåíèÿ îá óäàëåíèè ëèñòà.
Application.DisplayAlerts = False
'óäàëèòü ëèñò Êëèåíò
Target.Delete
'×òîáû ïîÿâëÿëèñü ïðåäóïðåæäàþùèå ñîîáùåíèÿ òîãäà,
'êîãäà îíè äîëæíû ïîÿâëÿòüñÿ.
Application.DisplayAlerts = True
'ïåðåèìåíîâàòü ëèñò Êëèåíò2 â Êëèåíò
Worksheets(IndexTarget).Name = SheetName
'çàêðûâàåì êíèãó
Application.DisplayAlerts = False
Source.Close
Application.DisplayAlerts = True
End If

End Function
...
Рейтинг: 0 / 0
09.07.2014, 22:11
    #38692423
Andrey.Russe
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает метод Copy (Worksheets), но всё очень странно.
The_PristЕще вариант: Вы копируете лист из книги формата 2007 Excel в книгу, имеющую формат более ранних версий(2003 и меньше). Т.к. кол-во строк и столбцов в таких листах различается - копирование невозможно.

использую везде одинаковую версию и формат - Ексель 2010

Сделал проверку - перед функцией копирования воткнул следующие команды - все отработали без ошибок.
ячейки изменились.

Target.Activate
Target.Select
Target.Cells(1, 1) = "URA1"

SourceL.Activate
SourceL.Select
SourceL.Cells(1, 1) = "URA"
...
Рейтинг: 0 / 0
09.07.2014, 22:17
    #38692428
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает метод Copy (Worksheets), но всё очень странно.
Andrey.Russe,

Освойте пожалуйста наконец тэги оформления кода - FAQ . Вы же видите, как вам отвечают, и все равно пытаетесь заставить нас разбирать своё "мелким почерком"...
...
Рейтинг: 0 / 0
09.07.2014, 22:21
    #38692431
Andrey.Russe
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает метод Copy (Worksheets), но всё очень странно.
Код: vbnet
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.
SheetName="client"
MacroPath="C:\macro\macro_2014.xlsm"
ClientName="C:\doc\client2.xlsm"

Public Function CopySheet(SheetName As String) As Boolean

Dim Source As Excel.Workbook
Dim Target As Excel.Worksheet
Dim SourceL As Excel.Worksheet

'&#239;&#240;&#238;&#226;&#229;&#240;&#232;&#242;&#252; &#237;&#224;&#235;&#232;&#247;&#232;&#229; &#235;&#232;&#241;&#242;&#224;
If IsSheetPresent(SheetName) Then
'&#235;&#232;&#241;&#242; &#229;&#241;&#242;&#252;
CopySheet = True
Else
CopySheet = False
'&#235;&#232;&#241;&#242;&#224; &#237;&#229;&#242; - &#241;&#238;&#231;&#228;&#224;&#242;&#252; &#237;&#238;&#226;&#251;&#233;
'&#241;&#238;&#231;&#228;&#224;&#242;&#252; &#235;&#232;&#241;&#242;
Set Sh = Sheets.Add
Sh.Name = SheetName
'&#234;&#243;&#228;&#224; &#234;&#238;&#239;&#232;&#240;&#238;&#226;&#224;&#242;&#252;
Set Target = Workbooks(ClientName).Worksheets(SheetName)
'&#241;&#238;&#245;&#240;&#224;&#237;&#255;&#229;&#236; &#239;&#238;&#240;&#255;&#228;&#234;&#238;&#226;&#251;&#233; &#237;&#238;&#236;&#229;&#240; &#235;&#232;&#241;&#242;&#224;
IndexTarget = Target.Index
'&#238;&#242;&#234;&#240;&#251;&#226;&#224;&#229;&#236; &#244;&#224;&#233;&#235;
Set Source = Workbooks.Open(MacroPath, , True, , "111")
Set SourceL = Source.Worksheets(SheetName)
'&#202;&#238;&#239;&#232;&#240;&#238;&#226;&#224;&#237;&#232;&#229; &#235;&#232;&#241;&#242;&#224; &#202;&#235;&#232;&#229;&#237;&#242; &#232;&#231; &#234;&#237;&#232;&#227;&#232; &#236;&#224;&#234;&#240;&#238;&#241;&#224; &#226; &#234;&#237;&#232;&#227;&#243; &#202;&#235;&#232;&#229;&#237;&#242;&#224;
SourceL.Copy After:=Target ОШИБКА ЗДЕСЬ
'&#215;&#242;&#238;&#225;&#251; &#237;&#229; &#239;&#238;&#255;&#226;&#235;&#255;&#235;&#232;&#241;&#252; &#239;&#240;&#229;&#228;&#243;&#239;&#240;&#229;&#230;&#228;&#224;&#254;&#249;&#232;&#229; &#241;&#238;&#238;&#225;&#249;&#229;&#237;&#232;&#255; &#238;&#225; &#243;&#228;&#224;&#235;&#229;&#237;&#232;&#232; &#235;&#232;&#241;&#242;&#224;.
Application.DisplayAlerts = False
'&#243;&#228;&#224;&#235;&#232;&#242;&#252; &#235;&#232;&#241;&#242; &#202;&#235;&#232;&#229;&#237;&#242;
Target.Delete
'&#215;&#242;&#238;&#225;&#251; &#239;&#238;&#255;&#226;&#235;&#255;&#235;&#232;&#241;&#252; &#239;&#240;&#229;&#228;&#243;&#239;&#240;&#229;&#230;&#228;&#224;&#254;&#249;&#232;&#229; &#241;&#238;&#238;&#225;&#249;&#229;&#237;&#232;&#255; &#242;&#238;&#227;&#228;&#224;,
'&#234;&#238;&#227;&#228;&#224; &#238;&#237;&#232; &#228;&#238;&#235;&#230;&#237;&#251; &#239;&#238;&#255;&#226;&#235;&#255;&#242;&#252;&#241;&#255;.
Application.DisplayAlerts = True
'&#239;&#229;&#240;&#229;&#232;&#236;&#229;&#237;&#238;&#226;&#224;&#242;&#252; &#235;&#232;&#241;&#242; &#202;&#235;&#232;&#229;&#237;&#242;2 &#226; &#202;&#235;&#232;&#229;&#237;&#242;
Worksheets(IndexTarget).Name = SheetName
'&#231;&#224;&#234;&#240;&#251;&#226;&#224;&#229;&#236; &#234;&#237;&#232;&#227;&#243;
Application.DisplayAlerts = False
Source.Close
Application.DisplayAlerts = True
End If

End Function 
...
Рейтинг: 0 / 0
09.07.2014, 22:26
    #38692435
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает метод Copy (Worksheets), но всё очень странно.
Что-то мне вот эта тема совершенно не нравится:
Код: vbnet
1.
 Set Target = Workbooks("C:\doc\client2.xlsm").Worksheets(SheetName)


К книге обращаются по имени книги, а не по полному ее пути. Кроме того, ее предварительно требуется открыть. То есть я ожидал бы увидеть что-то типа:
Код: vbnet
1.
 Set Target = Workbooks.Open("C:\doc\client2.xlsm").Worksheets(SheetName)

(разумеется с отслеживанием ошибки открытия, но это позже)
...
Рейтинг: 0 / 0
09.07.2014, 22:29
    #38692436
Andrey.Russe
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает метод Copy (Worksheets), но всё очень странно.
Shocker.ProЧто-то мне вот эта тема совершенно не нравится:
Код: vbnet
1.
 Set Target = Workbooks("C:\doc\client2.xlsm").Worksheets(SheetName)


К книге обращаются по имени книги, а не по полному ее пути. Кроме того, ее предварительно требуется открыть. То есть я ожидал бы увидеть что-то типа:
Код: vbnet
1.
 Set Target = Workbooks.Open("C:\doc\client2.xlsm").Worksheets(SheetName)

(разумеется с отслеживанием ошибки открытия, но это позже)


Сейчас проверю по поводу полного пути или попробую как-то поменять на активную книгу.
Но Target - это текущая книга, в которой работает клиент - она уже открыта.
...
Рейтинг: 0 / 0
09.07.2014, 22:30
    #38692438
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает метод Copy (Worksheets), но всё очень странно.
если открыта, тогда
Код: vbnet
1.
 Set Target = Workbooks("client2").Worksheets(SheetName)
...
Рейтинг: 0 / 0
09.07.2014, 22:31
    #38692439
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает метод Copy (Worksheets), но всё очень странно.
Вообще, как-то не очень понятна структура кода, то есть макрос в одной книге, клиент работает в другой книге, а копирует в третью книгу?
...
Рейтинг: 0 / 0
09.07.2014, 22:31
    #38692440
Andrey.Russe
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает метод Copy (Worksheets), но всё очень странно.
Извиняюсь. я дал Вам ложную информацию.

Верная: ClientName="client2.xlsm"
...
Рейтинг: 0 / 0
09.07.2014, 22:34
    #38692443
Andrey.Russe
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает метод Copy (Worksheets), но всё очень странно.
Код: vbnet
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.
Public Function CopySheet(SheetName As String) As Boolean
    
    Dim Source As Excel.Workbook
    Dim Target As Excel.Worksheet
    Dim SourceL As Excel.Worksheet
    
    'проверить наличие листа
    If IsSheetPresent(SheetName) Then
        'лист есть - остановить копирование
        CopySheet = True
    Else
        CopySheet = False
        'листа нет - создать новый
        'создать лист
        Set Sh = Sheets.Add
        Sh.Name = SheetName
        'куда копировать
        Set Target = Workbooks(ClientName).Worksheets(SheetName)
        'сохраняем порядковый номер листа
        IndexTarget = Target.Index
        'открываем файл
        Set Source = Workbooks.Open(MacroPath, , True, , "111")
        Set SourceL = Source.Worksheets(SheetName)
        'Копирование листа Клиент из книги макроса в книгу Клиент
        SourceL.Copy After:=Target
        'Чтобы не появлялись предупреждающие сообщения об удалении листа.
        Application.DisplayAlerts = False
        'удалить лист Клиент
        Target.Delete
        'Чтобы появлялись предупреждающие сообщения тогда,
        'когда они должны появляться.
        Application.DisplayAlerts = True
        'переименовать лист Клиент2 в Клиент
        Worksheets(IndexTarget).Name = SheetName
        'закрываем книгу
        Application.DisplayAlerts = False
        Source.Close
        Application.DisplayAlerts = True
    End If
    
End Function
...
Рейтинг: 0 / 0
09.07.2014, 22:37
    #38692445
Andrey.Russe
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает метод Copy (Worksheets), но всё очень странно.
Идея такая:

Есть книга защищенная (Source) от пользователей.
Есть книга пользователя (Target).

Он щелкает кнопку и макрос открывает Source и копирует в Target.

Но при работе я увидел, что он не копирует этот лист четко в цель, а создает новый лист и лупит в него.
Поэтому в конце добавил код на удаление листа и переименование созданного листа.
...
Рейтинг: 0 / 0
09.07.2014, 22:40
    #38692446
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает метод Copy (Worksheets), но всё очень странно.
Andrey.RusseНо при работе я увидел, что он не копирует этот лист четко в цель, а создает новый лист и лупит в него.стоп-стоп, что значит "четко в цель"? Вы вообще справку по команде Copy читали? или все методом тыка исследуете?

Andrey.RusseЕсть книга защищенная (Source) от пользователей.
Есть книга пользователя (Target).А макрос, который вы привели где находится? в третьей книге? Я не могу понять, что вы тут делаете - создаете лист в одной книге, потом открываете другую книгу и из нее копируете лист в третью книгу, так?
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Не работает метод Copy (Worksheets), но всё очень странно. / 25 сообщений из 44, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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