View Full Version : Cannot copy a range....

07-08-2007, 02:18 PM

Basically, I'm going demented....:banghead:

I have a simple sheet from which I need to copy out some data. This goes to a sheet called "Report" - click a command button and the required data is copied. No problem. I'm then creating a Word template and pasting in the data. Everything works fine, except the copy from the Report sheet. No matter which way I try this, I continually get a "1004 - Application Error" message. This seems to me to be a referencing issue but I've tried every variation I can and I still get the same error. Obviously, I'm doing something daft here, but I've stared at this for so long that I can't see what it is. I've highlighted in RED both recent variations that crash. I've also checked the References dialog and have all the required Object Libraries checked.

Private Sub CommandButton1_Click()
Dim myRng As Range
Dim c As Range
Dim repRng As Range
Dim wdApp As Word.Application
Dim wdDoc As Word.Document

Set myRng = Range("C6:C35") 'the range on the question sheet that contains Yes/No etc

For Each c In myRng
If c.Value = "No" Then 'if the answer is No
With Sheets("Report")
.Range("B65536").End(xlUp).Offset(1, 0).Value = c.Value 'write the answer to column B
.Range("A65536").End(xlUp).Offset(1, 0).Value = c.Offset(0, -1).Value 'write the question to column A
End With
End If
Next c

Sheets("Report").Columns("A:B").AutoFit 'adjust the cell widths

'Worksheets("Report").Range("A1", Range("B65536").End(xlUp)).Copy


Set wdApp = New Word.Application
'create a new instance of Word
wdApp.Visible = True

Set wdDoc = wdApp.Documents.Add(newtemplate:=True) 'add a new template

'paste the data

Application.CutCopyMode = False

'do the rest of the stuff etc etc.....

Set wdApp = Nothing
End Sub
Could someone put me out of my misery?

07-08-2007, 02:28 PM
With Worksheets("Report")
.Range("A1", .Range("B65536").End(xlUp)).Copy
End With

07-08-2007, 02:34 PM
Hi Glaswegian

Just my thoughts but:

'Worksheets("Report").Range("A1", Range("B65536").End(xlUp)).Copy

...isn't a fully qualified reference - ie if the activesheet isn't Report then this will fail due to Range("B65536") pointing at the Activesheet instead of Report.



this will fail if Report isn't active as you can't select a range which isn't on the active sheet.

Hope this helps!


07-08-2007, 02:34 PM
Thank you.

I need a drink....

07-10-2007, 05:47 AM
I don't think you can copy a range from XL to Word but of course of been wrong many times before. Here's some example code that converts your "A" & "B" columns to strings which are then added together into one bigstring which is then inserted into the Word doc. HTH. Dave

Sub XLColtoWord()
Dim Wapp As Object, Astr As String, Bstr As String
Dim BigString As String, FileName As String
BigString = vbNullString
'change data to small strings...
'make big string from small strings
For cnt = 1 To 6
Astr = Sheets("sheet1").Range("A" & cnt) & " "
Bstr = Sheets("sheet1").Range("B" & cnt)
BigString = BigString + Astr + Bstr + Chr(13)
Next cnt
'insert BigString in Word doc
On Error GoTo Erfix
FileName = "C:\summary.doc"
Set Wapp = CreateObject("Word.Application")
Wapp.documents.Open FileName:=FileName, ReadOnly:=False
With Wapp.activedocument
.Range(0, .Characters.Count).Delete 'clear doc
.content.insertafter BigString
End With
Wapp.Visible = True
'Wapp.activedocument.Close savechanges:=True
Set Wapp = Nothing
Exit Sub
Set Wapp = Nothing
End Sub