Reputation: 59
I'm tearing my hair out trying to do what should be a really simple adjustment to a macro.
copy and paste doesn't seem to work. I get a property not supported error.
All I am trying to do is copy all cell contents from the original activesheet in the originating workbook (which will be sName) and paste it to the new workbook sheet(rvname)
Here is my current code: (I need it to work in excel 2003 and 2007)
Sub create_format_wb()
'This macro will create a new workbook
'Containing sheet1,(job plan) Original, (job plan) Revised, and 1 sheet for each task entered in the inputbox.
Dim Newbook As Workbook
Dim i As Integer
Dim sName As String
Dim umName As String
Dim rvName As String
Dim tBox As Integer
Dim jobplannumber As String
Dim oldwb As String
line1:
tBox = Application.InputBox(prompt:="Enter Number of Tasks", Type:=1)
If tBox < 1 Then
MsgBox "Must be at least 1"
GoTo line1
Else
sName = ActiveSheet.Name
umName = (sName & " Original")
rvName = (sName & " Revised")
jobplannumber = sName
Set Newbook = Workbooks.Add
With Newbook
.Title = sName
.SaveAs Filename:=(sName & " .xls")
.Application.SheetsInNewWorkbook = 1
.Sheets.Add(, After:=Sheets(Worksheets.Count)).Name = umName
Worksheets(umName).Range("A1").Select
With Worksheets(umName).QueryTables.Add(Connection:= _
"ODBC;DSN=MX7PROD;Description=MX7PROD;APP=Microsoft Office 2003;WSID=USOXP-93BPBP1;DATABASE=MX7PROD;Trusted_Connection=Yes" _
, Destination:=Range("A1"))
.CommandText = Array( _
"SELECT jobplan_print.taskid, jobplan_print.description, jobplan_print.critical" & Chr(13) _
& "" & Chr(10) & "FROM MX7PROD.dbo.jobplan_print jobplan_print" & Chr(13) & "" & Chr(10) _
& "WHERE (jobplan_print.jpnum= '" & jobplannumber & "' )")
.Name = "Query from MX7PROD"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:=False
End With
.Worksheets(umName).UsedRange.Columns.AutoFit
.Sheets.Add(, After:=Sheets(Worksheets.Count)).Name = rvName
For i = 1 To tBox
.Sheets.Add(, After:=Sheets(Worksheets.Count)).Name = ("Task " & i)
Next i
End With
Worksheets(rvName).UsedRange.Columns.AutoFit
End If
End Sub
Can somone walk me through how to go about this?
Any help appreciated.
Upvotes: 0
Views: 23445
Reputation: 16279
To copy the contents of a worksheet to another existing worksheet:
wsDest.UsedRange.Clear 'Clear the contents of the destination sheet
wsSource.UsedRange.Copy Destination:=wsDest.Range("A1")
Where wsSource
and wsDest
are the source and destination worksheets respectively.
Upvotes: 2
Reputation: 35318
You could do something like this:
Sub Copy()
Workbooks("Book1").Worksheets("Sheet1").Cells.Copy
Workbooks("Book2").Worksheets("Sheet1").Range("A1").Select
Workbooks("Book2").Worksheets("Sheet1").Paste
End Sub
FYI, if you record macros in Excel while doing the operations you'd like to code, you can often get what you're looking for with minimal modifications to the automatically-generated macro code.
Upvotes: 2
Reputation: 1
Would you consider copying the worksheet as a whole? Here's a basic example, you'll have to customize your workbook organization and naming requirements.
Sub CopyWkst()
Dim wksCopyMe As Worksheet
Set wksCopyMe = ThisWorkbook.Worksheets("Sheet1")
wksCopyMe.Copy After:=ThisWorkbook.Sheets(Worksheets.Count)
ThisWorkbook.ActiveSheet.Name = "I'm New!"
End Sub
Upvotes: 0