Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 270
Default Run-time error 9

I am getting the following error at the asterisked line:-

"Run-time error'9': Subscript out of range".

Can someone point out why?

Sub TransferData()

Dim NewBookPath As String
Dim OldBookPath As String
Dim OldBook As String
Dim OldBookName As Workbook
Dim NewBook As String
Dim Lr As Long
Dim ThisBookName As String


ThisBookName = ThisWorkbook.Name
OldBook = Left(ThisBookName, 22) & Mid(ThisBookName, 26,
Len(ThisBookName) - 22)

NewBookPath = ThisWorkbook.Path
OldBookPath = NewBookPath & "\" & OldBook

NewBook = ActiveWorkbook.Name

Application.EnableEvents = False
Application.ScreenUpdating = False

*******
Set OldBookName = Workbooks(OldBook)
********

#####More code######

End Sub

Thanks
Sandy

  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 9,101
Default Run-time error 9

Add a msgbox displaying the workbook name to make surre you are deleting the
corect name. Also make sure you have the .XLS as part of the book name.

"Sandy" wrote:

I am getting the following error at the asterisked line:-

"Run-time error'9': Subscript out of range".

Can someone point out why?

Sub TransferData()

Dim NewBookPath As String
Dim OldBookPath As String
Dim OldBook As String
Dim OldBookName As Workbook
Dim NewBook As String
Dim Lr As Long
Dim ThisBookName As String


ThisBookName = ThisWorkbook.Name
OldBook = Left(ThisBookName, 22) & Mid(ThisBookName, 26,
Len(ThisBookName) - 22)

NewBookPath = ThisWorkbook.Path
OldBookPath = NewBookPath & "\" & OldBook

NewBook = ActiveWorkbook.Name

Application.EnableEvents = False
Application.ScreenUpdating = False

*******
Set OldBookName = Workbooks(OldBook)
********

#####More code######

End Sub

Thanks
Sandy


  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 270
Default Run-time error 9

Hi Joel,
The following message box inserted just before the error line
MsgBox OldBook
produces the correct file name:-

"Personal Data Analyser-Sample Data-James Brown.xls"

Sandy

"Joel" wrote in message
...
Add a msgbox displaying the workbook name to make surre you are deleting
the
corect name. Also make sure you have the .XLS as part of the book name.

"Sandy" wrote:

I am getting the following error at the asterisked line:-

"Run-time error'9': Subscript out of range".

Can someone point out why?

Sub TransferData()

Dim NewBookPath As String
Dim OldBookPath As String
Dim OldBook As String
Dim OldBookName As Workbook
Dim NewBook As String
Dim Lr As Long
Dim ThisBookName As String


ThisBookName = ThisWorkbook.Name
OldBook = Left(ThisBookName, 22) & Mid(ThisBookName, 26,
Len(ThisBookName) - 22)

NewBookPath = ThisWorkbook.Path
OldBookPath = NewBookPath & "\" & OldBook

NewBook = ActiveWorkbook.Name

Application.EnableEvents = False
Application.ScreenUpdating = False

*******
Set OldBookName = Workbooks(OldBook)
********

#####More code######

End Sub

Thanks
Sandy


  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 9,101
Default Run-time error 9

I would make the old book the active workbook then do this
msgbox(activeworkbook.name)

and compare the string you posted with the one returned from the msgbox
above. Put both strings into notepad on seperate lines and look closely.


also you can simplifiy the following line
from
OldBook = Left(ThisBookName, 22) & Mid(ThisBookName, 26,
Len(ThisBookName) - 22)

to
OldBook = Left(ThisBookName, 22) & Mid(ThisBookName, 26)


Mid() in VBA doesn't require the length. The worksheet function does
require the length.

"Sandy" wrote:

Hi Joel,
The following message box inserted just before the error line
MsgBox OldBook
produces the correct file name:-

"Personal Data Analyser-Sample Data-James Brown.xls"

Sandy

"Joel" wrote in message
...
Add a msgbox displaying the workbook name to make surre you are deleting
the
corect name. Also make sure you have the .XLS as part of the book name.

"Sandy" wrote:

I am getting the following error at the asterisked line:-

"Run-time error'9': Subscript out of range".

Can someone point out why?

Sub TransferData()

Dim NewBookPath As String
Dim OldBookPath As String
Dim OldBook As String
Dim OldBookName As Workbook
Dim NewBook As String
Dim Lr As Long
Dim ThisBookName As String


ThisBookName = ThisWorkbook.Name
OldBook = Left(ThisBookName, 22) & Mid(ThisBookName, 26,
Len(ThisBookName) - 22)

NewBookPath = ThisWorkbook.Path
OldBookPath = NewBookPath & "\" & OldBook

NewBook = ActiveWorkbook.Name

Application.EnableEvents = False
Application.ScreenUpdating = False

*******
Set OldBookName = Workbooks(OldBook)
********

#####More code######

End Sub

Thanks
Sandy



  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 270
Default Run-time error 9

Hi Joel

Here is the (almost) entire code which works fine (until the if section is
inserted) but what I was trying to do was incorporate a test for the old
book being already open - in which case run the copy and paste code - if it
is closed then open it and then run the copy and paste code. (I have changed
the line you suggested).
I thought the "if" could go where I have commented it out.

Further - the reference to "Workbooks(OldName)" does not return an error
within the copy and paste sections - I am confused, hope it makes more sense
to you.

I got the basic code from here -
http://www.ozgrid.com/VBA/IsWorkbookOpen.htm.

Sub TransferData()

Dim NewBookPath As String
Dim OldBookPath As String
Dim OldBook As String
Dim OldBookName As Workbook
Dim NewBook As String
Dim Lr As Long
Dim SearchRngToCopy As Range
Dim DestCellRecord As Range
Dim ThisBookName As String


ThisBookName = ThisWorkbook.Name
OldBook = Left(ThisBookName, 22) & Mid(ThisBookName, 26)

NewBookPath = ThisWorkbook.Path
OldBookPath = NewBookPath & "\" & OldBook

NewBook = ActiveWorkbook.Name

Application.EnableEvents = False
Application.ScreenUpdating = False

' Set OldBookName = Workbooks(OldBook)
' If Workbooks(OldBook) Is Nothing Then
Workbooks.Open OldBookPath
' End If

'Copy Data
Windows(OldBook).Activate
ActiveWorkbook.Unprotect

With Workbooks(OldBook).Sheets("Records")
Lr = .Range("A65536").End(xlUp).Row
If Lr < 53 Then
Lr = 53
End If
Set RecordRngToCopy = .Range("A53:GM" & Lr)
End With

'Paste Data
Windows(NewBook).Activate
ActiveWorkbook.Unprotect

With Workbooks(NewBook).Sheets("Records")
.Unprotect Password:="xx"
Set DestCellRecord = .Range("A53")
RecordRngToCopy.Copy Destination:=DestCellRecord
.Protect Password:="xx"
End With


Windows(OldBook).Activate

Workbooks(OldBook).Close SaveChanges:=False

Application.EnableEvents = True
Application.ScreenUpdating = True

End Sub


"Joel" wrote in message
...
I would make the old book the active workbook then do this
msgbox(activeworkbook.name)

and compare the string you posted with the one returned from the msgbox
above. Put both strings into notepad on seperate lines and look closely.


also you can simplifiy the following line
from
OldBook = Left(ThisBookName, 22) & Mid(ThisBookName, 26,
Len(ThisBookName) - 22)

to
OldBook = Left(ThisBookName, 22) & Mid(ThisBookName, 26)


Mid() in VBA doesn't require the length. The worksheet function does
require the length.

"Sandy" wrote:

Hi Joel,
The following message box inserted just before the error line
MsgBox OldBook
produces the correct file name:-

"Personal Data Analyser-Sample Data-James Brown.xls"

Sandy

"Joel" wrote in message
...
Add a msgbox displaying the workbook name to make surre you are
deleting
the
corect name. Also make sure you have the .XLS as part of the book
name.

"Sandy" wrote:

I am getting the following error at the asterisked line:-

"Run-time error'9': Subscript out of range".

Can someone point out why?

Sub TransferData()

Dim NewBookPath As String
Dim OldBookPath As String
Dim OldBook As String
Dim OldBookName As Workbook
Dim NewBook As String
Dim Lr As Long
Dim ThisBookName As String


ThisBookName = ThisWorkbook.Name
OldBook = Left(ThisBookName, 22) & Mid(ThisBookName, 26,
Len(ThisBookName) - 22)

NewBookPath = ThisWorkbook.Path
OldBookPath = NewBookPath & "\" & OldBook

NewBook = ActiveWorkbook.Name

Application.EnableEvents = False
Application.ScreenUpdating = False

*******
Set OldBookName = Workbooks(OldBook)
********

#####More code######

End Sub

Thanks
Sandy



Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
run time error 1004 general odbc error excel 2003 vba Mentos Excel Programming 5 January 24th 11 02:56 PM
Error handling error # 1004 Run-time error [email protected] Excel Programming 3 May 20th 08 02:23 PM
Run Time 1004 Error: Application or Object Difine Error BEEJAY Excel Programming 0 October 17th 06 10:45 PM
Conditional Formatting - Run Time Error '13' Type Mismatch Error ksp Excel Programming 0 July 11th 06 07:06 AM
run-time error '1004': Application-defined or object-deifined error [email protected] Excel Programming 5 August 10th 05 09:39 PM


All times are GMT +1. The time now is 05:42 AM.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright ©2004-2024 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"