Отлично, спасибо тебе. Я с макросами вообще не дружу, можешь поправить код чтоб при сохранении запрашивал имя файла, так же возможно сохранить ширину колонок при копировании, а то все колонки сжимаются как при стандартном виде. Так же можно сделать чтоб не сохранялись последние 3 строки под таблицей и пятая (если смотреть снизу), то есть нужно чтоб под таблицей только осталась «общая сумму в юанях»
Добавлено через 51 минуту
немного подредактировал, вообщем
1. не могу добиться чтоб колонки сохраняли свой размер, причина скорее всего в этом:
Отчет о совместимости для Заказ.xls
Дата отчета: 7/28/2013 16:01
Некоторые свойства данной книги не поддерживаются более ранними версиями Excel. Открытие книги в более ранней версии Excel или ее сохранение в формате более ранней версии приведет к потере или ограничению функциональности этих свойств.
Несущественная потеря точности Число экземпляров Версия
Некоторые ячейки или стили в этой книге содержат форматирование, не поддерживаемое выбранным форматом файла. Эти форматы будут преобразованы в наиболее близкий из имеющихся форматов. 20 Excel 97-2003
Можете поправить код под 2010.
2. Как заставить прописывать имя я нашел где, а вот как заставить спрашивать имя документа перед сохранением?
3. не могу прописать чтоб последние 5 строки под таблицей не сохранялись, их под таблицей 8, нужно чтоб сохранялись 3 первые
Добавлено через 1 час 19 минут
Размер столюцов в сохраненной таблице должен быть:
Visual Basic | ||
|
как (куда) прописать его в этот код
Сообщение от Alex77755
Visual Basic | ||
|
Kizirus, опечатка в коде. Для проверки сделайте
Кстати не Вы первый…
Пока это не поправите — далее код писать рано.
Ну а рамки — это тогда проще копировать не данные через массив, а весь диапазон. Ну или отдельно формат.
Вот копирование диапазона в цикле, косяк поправил:
Код |
---|
Sub makros() Dim lLastRow As Long With Range("B7").CurrentRegion lLastRow = .Cells(.Cells.CountLarge).Row End With If lLastRow < 2 Then Exit Sub Dim rngSrc As Range Set rngSrc = Range("B7:G" & lLastRow) For i = 1 To [g3] With Range("B7").CurrentRegion lLastRow = .Cells(.Cells.CountLarge).Row + 1 End With Dim rngArchiv As Range Set rngArchiv = Range("B" & lLastRow & ":G" & (lLastRow + rngSrc.Rows.CountLarge - 1)) rngSrc.Copy rngArchiv.Cells(1) Next End Sub |
Ребята, помогите пожалуйста рядовому бухгалтеру.
Я работаю с таблицей на одном листе, делаю ряд преобразований, потом мне эту таблицу нужно скопировать и перенести на другой лист и вставить начиная с определенной строки. Я автоматически записала макрос, но проблема в том, что он мне все время копирует таблицу в одно и то же место (т.е. в самое начало листа), а мне надо, чтобы он копировал ее именно с той ячейки где у меня курсор находится. Как это сделать подскажите, пожалуйста.
Sub Macro7()
Rows(«1:1»).Select
Selection.Delete Shift:=xlUp
Cells.Select
Selection.Sort Key1:=Range(«A1»), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Selection.Copy
Sheets(«Master»).Select
ActiveSheet.Paste
End Sub
И еще… Для того чтобы скопировать таблицу я обычно нажимаю Ctrl+A, что конечно же не совсем правильно — он ведь выделяет абсолютно все ячейки листа. А существует какая-то комбинация клавиш, чтобы выделить только диапазон заполненный данными? У меня таблица по длинне и ширине каждый день меняется и я хочу пользоваться макросом который бы копировал все данные из этой таблицы независимо от колличества строк и столбцов на другой лист автоматически.
Зараннее всем огромное спасибо.
Цитата: JennyK от 13.05.2009, 03:59
Ребята, помогите пожалуйста рядовому бухгалтеру.
Привет коллега!
Цитировать
Я работаю с таблицей на одном листе, делаю ряд преобразований, потом мне эту таблицу нужно скопировать и перенести на другой лист и вставить начиная с определенной строки. Я автоматически записала макрос, но проблема в том, что он мне все время копирует таблицу в одно и то же место (т.е. в самое начало листа), а мне надо, чтобы он копировал ее именно с той ячейки где у меня курсор находится. Как это сделать подскажите, пожалуйста.Sub Macro7()
Rows(«1:1»).Select
Selection.Delete Shift:=xlUp
Cells.Select
Selection.Sort Key1:=Range(«A1»), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Selection.Copy
Sheets(«Master»).Select
ActiveSheet.Paste
End Sub
Попробуй вот так:
Sub Macro7()
Dim blok As Object
Dim nREnd As Long
Dim nCEnd As Integer, k As Integer
With ThisWorkbook
With .ActiveSheet
Set blok = .Cells(1, 1).CurrentRegion
nREnd = blok.Rows.Count
nCEnd = blok.Columns.Count
.Rows(1).Delete Shift:=xlUp
Range(.Cells(1, 1), .Cells(nREnd, nCEnd)).Sort Key1:=Range(.Cells(1, 1), .Cells(1, 1)), _
Order1:=xlAscending, _
Header:=xlGuess, _
OrderCustom:=1, _
MatchCase:=False, _
Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Range(.Cells(1, 1), .Cells(nREnd, nCEnd)).Copy
End With
k = 5
With Worksheets(«Master»)
.Paste Destination:=.Range(.Cells(k, 1), .Cells(nREnd + k, nCEnd + k))
End With
End With
End Sub
ЦитироватьИ еще… Для того чтобы скопировать таблицу я обычно нажимаю Ctrl+A, что конечно же не совсем правильно — он ведь выделяет абсолютно все ячейки листа. А существует какая-то комбинация клавиш, чтобы выделить только диапазон заполненный данными?
А зачем комбинация клавишь? CurrentRegion и дело в шляпе!
ЦитироватьУ меня таблица по длинне и ширине каждый день меняется и я хочу пользоваться макросом который бы копировал все данные из этой таблицы независимо от колличества строк и столбцов на другой лист автоматически.
Зараннее всем огромное спасибо.
Путей к вершине — множество. Этот один из многих!
Дублирование таблицы на другой лист нужных столбцов |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
How to copy and paste data using a Macro in Excel. I’ll show you multiple ways to do this, including across worksheets and workbooks.
Sections:
Simple Copy/Paste
Copy Entire Range
Copy between Worksheets
Copy between Workbooks
Notes
Simple Copy/Paste
Range("A1").Copy Range("B1")
This copies cell A1 to cell B1.
Range(«A1»).Copy is the part that copies the cell.
Range(«B1») is the cell where the data will be copied.
This is a simple one line piece of code and it’s very easy to use.
Notice that there is a space between these two parts of the code.
Copy Entire Range
Range("A1:A5").Copy Range("B1:B5")
Range(«A1:A5»).Copy is the part that copies the range.
Range(«B1:B5») is the range where the data will be copied.
You can also write it like this:
Range("A1:A5").Copy Range("B1")
Notice that the range to where you will copy the data has only a reference to cell B1.
You only have to reference the very first cell to which the range will be copied and the entire range will copy in the cells below there.
NOTE: if you do it like this, you may end up overwriting data and Excel will not give you a warning about this; the data will simply be filled down as far as it needs to go to copy the first range.
Copy between Worksheets
Sheets("Sheet1").Range("A1").Copy Sheets("Sheet2").Range("B1")
This follows the same pattern as the above examples except that we need to tell the macro from which sheet we want to get the data and to which sheet we want to copy the data.
Sheets(«Sheet1»). is placed in front of the first range and that means to get the data from Sheet1, which is the name of a worksheet in the workbook.
Sheets(«Sheet2»). is placed in front of the range to which we want to copy the data and Sheet2 is the name of the worksheet where the data will be copied.
Copy between Workbooks
Workbooks("Copy and Paste Data using Macro VBA in Excel.xlsm").Sheets("Sheet1").Range("A1").Copy Workbooks("Copy and Paste Data using Macro VBA in Excel.xlsm").Sheets("Sheet3").Range("A1")
Here, we follow the above examples and, this time, add a reference to the workbooks from which we want to get the data and to which we want to place the data.
Workbooks(«Copy and Paste Data using Macro VBA in Excel.xlsm»). is the code that says in which workbook we want to place the data. Copy and Paste Data using Macro VBA in Excel.xlsm is the name of the workbook. In this example I used this for both parts, the workbook from which the data comes and where it goes. This allows you to run this macro within a single workbook and still show you how it works. In a real-world example, the first part contains the name of the workbook where you get the data from and the second contains the name of the workbook where you want to place the data.
Read this tutorial to copy values from another workbook, even if it’s closed.
Notes
All examples in the attached workbook have been commented out. Simply remove the single quote from the line of code you want to test and then run the macro.
Download the attached file to get these examples in Excel.
Similar Content on TeachExcel
Activate or Navigate to a Worksheet using Macros VBA in Excel
Tutorial: Make a particular worksheet visible using a macro in Excel.
This is called activating a wo…
Get the Name of a Worksheet in Macros VBA in Excel
Tutorial: How to get the name of a worksheet in Excel using VBA and Macros and also how to store tha…
Get the Last Row using VBA in Excel
Tutorial:
(file used in the video above)
How to find the last row of data using a Macro/VBA in Exce…
Remove Dashed Lines from Copy Paste VBA in Excel
Tutorial: How to remove the flashing dashes from a copy/paste range using VBA in Excel; this removes…
Copy one range and paste in another range
Tutorial: Below is a macro, just copy and paste it into a module in your workbook and go from there…
Guide to Combine and Consolidate Data in Excel
Tutorial: Guide to combining and consolidating data in Excel. This includes consolidating data from …