Страницы: 1
RSS
Скопировать данные в другой файл
 
Подскажите, как можно с помощью VBA в текущей книге выделить определенный диапазон, открыть другую книгу, ввести там пароль для редактирования, скопировать туда данные (с всем форматированием) и закрыть книгу?
 
Подсказываю.  
Нужно написать макрос.
 
{quote}{login=RAN}{date=21.08.2011 09:49}{thema=}{post}  
Нужно написать макрос.{/post}{/quote}Можно макрорекордером.
 
Спасибо, я пробовал макрорекодорам, но там не пишется открытие файла, а тем более ввод пароля.  
 
Копирую диапазон а дальше запись не идет  
Range("C2:N33").Select  
Selection.Copy
 
У меня пишется:  
 
Sub Макрос2()  
   Range("A1:B2").Select  
   Selection.Copy  
   ChDir "C:\Documents and Settings\Serge 007\Рабочий стол\Примеры решений"  
   Workbooks.Open Filename:= _  
       "C:\Documents and Settings\Serge 007\Рабочий стол\Примеры решений\Книга.xls"  
   Selection.PasteSpecial Paste:=xlPasteFormulasAndNumberFormats, Operation:= _  
       xlNone, SkipBlanks:=False, Transpose:=False  
   ActiveWorkbook.Save  
  End Sub  
 
Workbooks.Open Filename отвечает за открытие файла по указанному пути.  
Пароль не ставил, можете добавить сами - методы protect и unprotect.
 
Без пароля пробую так, но что-то не получается.  
 
Range("C2:N33").Select  'выделяют диапазон в текущей книге  
Selection.Copy 'копирую его  
Dim Ex As New Excel.Application  
Ex.Workbooks.Open "C:\Users\Yun\Desktop\test.xlsx"  'открывают другую книгу  
Ex.Visible = False  
Range("A2").Select 'становлюсь на ячейку A2  
ActiveSheet.Paste 'вставляю, сохраняю и закрываю  
Ex.ActiveWorkbook.Save    
Ex.ActiveWorkbook.Close  
End Sub
 
А зачем New Excel.Application?  
Чтобы НЕ работало?  
И не будет.-:)
 
Serge 007, спасибо!!
 
RAN, не знаю, я VBA не знаю, пробовал просто изменить другой макрос. Сейчас понимаю, что это не нужно было
 
Ясен пень, Вы создали другую инстанцию Экса, скрыли ее и что Вы куда копируете? Каким боком тут Ex.ActiveWorkbook? Вам бы правила почитать. Оч полезно. Для Вас и нас.
Я сам - дурнее всякого примера! ...
 
Это я G3org отвечал. Не анониму.
Я сам - дурнее всякого примера! ...
 
Мы поняли :-)))  
Ты никогда анонимам не отвечаешь ;-)
 
Sub www()  
iwbName = ThisWorkbook.Name  
ifailName = ThisWorkbook.Path & "\" & "Книга4.xls"  
Set wbTmp = Workbooks.Open(ifailName)  
Workbooks(iwbName).Sheets(1).Copy After:=wbTmp.Sheets(wbTmp.Sheets.Count)  
wbTmp.Close True  
End Sub
 
Выбрал способ Serge 007, т.к он мне более понятен.  
ввод пароля написал вот так: ActiveSheet.Unprotect ("0000") - в кавычки взял т.к без них 0000 превращаются автоматически в просто 0  
При запуске макроса, пароль все равно спрашивается, после ввода книга открывается, вставляются данные, но без форматирования (не копируется цвет ячеек). Подскажите почему, пожалуйста  
 
Sub Макрос2()  
Range("A1:F52").Select  
Selection.Copy  
ChDir "C:\Users\Yun\Desktop"  
Workbooks.Open Filename:= _  
C:\Users\Yun\Desktop\test2.xlsx  
ActiveSheet.Unprotect ("0000")  
Selection.PasteSpecial Paste:=xlPasteFormulasAndNumberFormats, Operation:= _  
xlNone, SkipBlanks:=False, Transpose:=False  
ActiveWorkbook.Save  
ActiveWorkbook.Close  
End Sub
 
А ежели не так  
Selection.PasteSpecial Paste:=xlPasteFormulasAndNumberFormats, Operation:= _  
xlNone, SkipBlanks:=False, Transpose:=False  
а так  
Selection.Paste
 
Выдает ошибку на Selection.Paste
 
{quote}{login=RAN}{date=21.08.2011 10:54}{thema=}{post}А ежели так  
Selection.Paste?{/post}{/quote}Автор вроде хотел <<<скопировать туда данные (с всем форматированием) >>>  
Просто Paste и связи вставит, а надо только данные?..
 
Нужно как текст, с форматированием (ширина столбцов, цвет текста и ячеек), но можно и формулами.
 
Погорячился с Selection  
Sub Макрос4()  
'  
' Макрос4 Макрос  
'  
   Range("A1:A3").Select  
   Selection.Copy  
   Range("C6").Select  
   ActiveSheet.Paste  
End Sub
 
RAN, спасибо это помогло.    
Еще раз всем спасибо за помощь и терпение
 
Чудите... Примерно:  
Sub Макрос2()  
   With Workbooks.Open("C:\Users\Yun\Desktop\test2.xlsx")  
       Me.[A1:F52].Copy .Sheets(1).[a1]
       .Sheets(1).UsedRange.Value = .Sheets(1).UsedRange.Value  
       .Close -1  
   End With  
End Sub
Я сам - дурнее всякого примера! ...
 
Забыл сказать - в модуль листа откуда.
Я сам - дурнее всякого примера! ...
 
Доброго времени суток!  
К сожалению, используя вышеописанные примеры не получилось выполнить следующую задачу:  
необходимо скопировать таблицу в другой файл (разумеется, не открывая 2-ой файл), причём:  
1) во 2-ом файле также должны быть работоспособны фильтры таблицы;  
2) в случае, если во 2-ом файле отсутствуют пользовательские функции 1-ого файла - копировать только значения из 1-ого файла.  
3) любые ссылки в таблице с других листов 1-ого файла заменяются значениями при переносе на 2-ой файл.  
4) значение/формула (если не противоречит пункту 3) исходника также переносится во 2-ой файл и вяглядит как значение/формула.
 
{quote}{login=АнЯ-2}{date=24.02.2012 05:55}{thema=}{post}...необходимо скопировать таблицу в другой файл (разумеется, не открывая 2-ой файл)...{/post}{/quote}С этим на сайт Павла Глобы:-)  
 
33355
Я сам - дурнее всякого примера! ...
 
))  
Как же всё-таки любят некоторые личности придираться к словам..  
Имелось в виду: открывается 1-ый файл, нажимается кнопочка (выполняется макрос, который открывает 2-ой файл, копирует всё это дело и закрывает 2-ой файл) и всё, вуаля..  
 
Копирует необходимый диапазон:  
Range("бла-бла").Select  
Selection.Copy  
 
Открывает 2-ой файл:  
Workbooks.Open Filename:= _  
C:\Users\"бла-бла"  
 
С какого места будет происходить "вставка":  
Range("C6").Select  
 
"Вставляет", сохраняет, закрывает:  
ActiveSheet.Paste  
ActiveWorkbook.Save  
ActiveWorkbook.Close  
 
С этим проблем нет, но как выяснилось - Excele не копирует таблицу (чтобы во 2-ой файле были работоспособны фильтры таблицы).  
По пункту два - в случае, если во 2-ом файле отсутствуют пользовательские функции 1-ого файла - при копировании разными методами выдаёт ошибку "ИМЯ".
Страницы: 1
Читают тему
Наверх