Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 29
Default How to properly read Value2 Range ?

I have two Value2(1) and Value(2) in this test..

Value2(1) is variant (1 to 2)
Value2(2) is variant (1 to 2)

in the first loop it read it right, Value2(1) 1,1 and 1,2

but in the second loop, it don't read right Value(2) 2,1 2,2

Please help if you know how to read it, thanks!

Basically the Range that it reads and sticks into Value2 array ? is
starting at A2:B last row, in this test it is A2:B3 as the range.

A2 has fullpath * filename.xls
B3 has filename.xls needed top execute the Sub within each workbook
that is open, as I understand it

Basically the idea of this VBA Proc is to read from my log which
contains \\network\full\path\filename.xls, open each workbook in the
range and then run a Sub within each one called ADD_BUTTONS.

This works on the first workbooks in range, but then for the Next
Value2:

FileToOpen = Value2(x, 1) - this one has a filename.xls
WrkBookName = Value2(x, 2) - and this one goes blank

FileToOpen has the fullpath & FileName,xls
WrkBookName has just the FineName.xls when I put a watch on them,
they have the right values, but I think I read it wrong
?

Please advise, maybe I am doing it wrong, not a guru :- )


Sub Add_Buttons()

Dim wsLogName As String
Dim wsLog As Worksheet
Dim wsLogRange As Range
Dim FileToOpen, WrkBookName As String
Dim RangeCell As Object

wsLogName = ActiveWorkbook.Name
Set wsLog = ActiveSheet

With wsLog
Sheets("Log").Activate
lastrow = .Range("A" & .Rows.Count).End(xlUp).Row
Set wsLogRange = Range("A2:B" & lastrow)
End With

x = 1

For Each Value2 In wsLogRange

FileToOpen = Value2(x, 1)
WrkBookName = Value2(x, 2)
On Error Resume Next

Workbooks.Open Filename:=FileToOpen
' Application.Run (WrkBookName & "!ADD_BUTTONS") ' this
works for manual test: "'test.xls'!ADD_BUTTONS"
' for auto
test: Application.Run (wbTarget.Name & "!MacroName")
ActiveWorkbook.Close SaveChanges:=False

x = 1 + 1

Next

MsgBox "Finished Looping All workbooks from Log and running their Sub
within"

End Sub
  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 420
Default How to properly read Value2 Range ?

First, Value2 is not a good variable name to use for your array. It looks way
too much like the .Value2 property of a range. And it may not confuse excel,
but it would confuse me!

Second, you don't need to have the name in the second column. In fact, I think
that if you have the name twice -- once in column A and once in column B, then
sooner or later, there's gonna be a mistake where they don't match. I wouldn't
do this.

Third, you close without saving. Is that for testing only, or did you really
mean that?

Anyway, this is untested, but it did compile.

Option Explicit
Sub Add_Buttons()

Dim wsLog As Worksheet
Dim wsLogRange As Range
Dim tempWkbk As Workbook
Dim LastRow As Long
Dim RangeCell As Range

Set wsLog = ActiveWorkbook.Worksheets("Log")

With wsLog
LastRow = .Range("A" & .Rows.Count).End(xlUp).Row
'be careful with those leading dots!
Set wsLogRange = .Range("A2:A" & LastRow)
End With

For Each RangeCell In wsLogRange.Cells

Set tempWkbk = Nothing
On Error Resume Next
Set tempWkbk = Workbooks.Open(Filename:=RangeCell.Value)
On Error GoTo 0

RangeCell.offset(0, 1).value = "" 'empty means ok.

If tempWkbk Is Nothing Then
RangeCell.Offset(0, 1).Value = "Not found!"
Else
Application.Run "'" & tempWkbk.Name & "'!ADD_BUTTONS"
tempWkbk.Close savechanges:=False 'why false????
End If
Next RangeCell

MsgBox "Finished Looping All workbooks from Log " _
& "and running their Sub within"

End Sub



On 07/30/2010 11:35, RompStar wrote:
I have two Value2(1) and Value(2) in this test..

Value2(1) is variant (1 to 2)
Value2(2) is variant (1 to 2)

in the first loop it read it right, Value2(1) 1,1 and 1,2

but in the second loop, it don't read right Value(2) 2,1 2,2

Please help if you know how to read it, thanks!

Basically the Range that it reads and sticks into Value2 array ? is
starting at A2:B last row, in this test it is A2:B3 as the range.

A2 has fullpath * filename.xls
B3 has filename.xls needed top execute the Sub within each workbook
that is open, as I understand it

Basically the idea of this VBA Proc is to read from my log which
contains \\network\full\path\filename.xls, open each workbook in the
range and then run a Sub within each one called ADD_BUTTONS.

This works on the first workbooks in range, but then for the Next
Value2:

FileToOpen = Value2(x, 1) - this one has a filename.xls
WrkBookName = Value2(x, 2) - and this one goes blank

FileToOpen has the fullpath& FileName,xls
WrkBookName has just the FineName.xls when I put a watch on them,
they have the right values, but I think I read it wrong
?

Please advise, maybe I am doing it wrong, not a guru :- )


Sub Add_Buttons()

Dim wsLogName As String
Dim wsLog As Worksheet
Dim wsLogRange As Range
Dim FileToOpen, WrkBookName As String
Dim RangeCell As Object

wsLogName = ActiveWorkbook.Name
Set wsLog = ActiveSheet

With wsLog
Sheets("Log").Activate
lastrow = .Range("A"& .Rows.Count).End(xlUp).Row
Set wsLogRange = Range("A2:B"& lastrow)
End With

x = 1

For Each Value2 In wsLogRange

FileToOpen = Value2(x, 1)
WrkBookName = Value2(x, 2)
On Error Resume Next

Workbooks.Open Filename:=FileToOpen
' Application.Run (WrkBookName& "!ADD_BUTTONS") ' this
works for manual test: "'test.xls'!ADD_BUTTONS"
' for auto
test: Application.Run (wbTarget.Name& "!MacroName")
ActiveWorkbook.Close SaveChanges:=False

x = 1 + 1

Next

MsgBox "Finished Looping All workbooks from Log and running their Sub
within"

End Sub


--
Dave Peterson
  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 29
Default How to properly read Value2 Range ?

Dave thanks!!

I didn't do the save at the end after running the ADD_BUTTONS, because
the ADD_BUTTONS has a Save in there, so I didn't want to Save it twice
to save time, let me see how this goes, thanks for your time!



On Jul 30, 11:05*am, Dave Peterson wrote:
First, Value2 is not a good variable name to use for your array. *It looks way
too much like the .Value2 property of a range. *And it may not confuse excel,
but it would confuse me!

Second, you don't need to have the name in the second column. *In fact, I think
that if you have the name twice -- once in column A and once in column B, then
sooner or later, there's gonna be a mistake where they don't match. *I wouldn't
do this.

Third, you close without saving. *Is that for testing only, or did you really
mean that?

Anyway, this is untested, but it did compile.

Option Explicit
Sub Add_Buttons()

* * *Dim wsLog As Worksheet
* * *Dim wsLogRange As Range
* * *Dim tempWkbk As Workbook
* * *Dim LastRow As Long
* * *Dim RangeCell As Range

* * *Set wsLog = ActiveWorkbook.Worksheets("Log")

* * *With wsLog
* * * * *LastRow = .Range("A" & .Rows.Count).End(xlUp).Row
* * * * *'be careful with those leading dots!
* * * * *Set wsLogRange = .Range("A2:A" & LastRow)
* * *End With

* * *For Each RangeCell In wsLogRange.Cells

* * * * *Set tempWkbk = Nothing
* * * * *On Error Resume Next
* * * * *Set tempWkbk = Workbooks.Open(Filename:=RangeCell.Value)
* * * * *On Error GoTo 0

* * * * *RangeCell.offset(0, 1).value = "" 'empty means ok.

* * * * *If tempWkbk Is Nothing Then
* * * * * * *RangeCell.Offset(0, 1).Value = "Not found!"
* * * * *Else
* * * * * * *Application.Run "'" & tempWkbk.Name & "'!ADD_BUTTONS"
* * * * * * *tempWkbk.Close savechanges:=False 'why false????
* * * * *End If
* * *Next RangeCell

* * *MsgBox "Finished Looping All workbooks from Log " _
* * * * * * *& "and running their Sub within"

End Sub

On 07/30/2010 11:35, RompStar wrote:





I have two Value2(1) and Value(2) in this test..


Value2(1) is variant (1 to 2)
Value2(2) is variant (1 to 2)


in the first loop it read it right, Value2(1) 1,1 and 1,2


but in the second loop, it don't read right Value(2) 2,1 2,2


Please help if you know how to read it, thanks!


Basically the Range that it reads and sticks into Value2 array ? is
starting at A2:B last row, in this test it is A2:B3 as the range.


A2 has fullpath * filename.xls
B3 has * filename.xls *needed top execute the Sub within each workbook
that is open, as I understand it


Basically the idea of this VBA Proc is to read from my log which
contains \\network\full\path\filename.xls, open each workbook in the
range and then run a Sub within each one called ADD_BUTTONS.


This works on the first workbooks in range, but then for the Next
Value2:


* * *FileToOpen = Value2(x, 1) * *- this one has a filename..xls
* * *WrkBookName = Value2(x, 2) * - and this one goes blank


FileToOpen has the fullpath& *FileName,xls
WrkBookName has just the FineName.xls * when I put a watch on them,
they have the right values, but I think I read it wrong
?


Please advise, maybe I am doing it wrong, not a guru :- )


Sub Add_Buttons()


Dim wsLogName As String
Dim wsLog As Worksheet
Dim wsLogRange As Range
Dim FileToOpen, WrkBookName As String
Dim RangeCell As Object


wsLogName = ActiveWorkbook.Name
Set wsLog = ActiveSheet


With wsLog
* * *Sheets("Log").Activate
* * *lastrow = .Range("A"& *.Rows.Count).End(xlUp).Row
* * *Set wsLogRange = Range("A2:B"& *lastrow)
End With


x = 1


For Each Value2 In wsLogRange


* * *FileToOpen = Value2(x, 1)
* * *WrkBookName = Value2(x, 2)
* * *On Error Resume Next


* * *Workbooks.Open Filename:=FileToOpen
' * *Application.Run (WrkBookName& *"!ADD_BUTTONS") * * * * *' this
works for manual test: "'test.xls'!ADD_BUTTONS"
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *' for auto
test: * Application.Run (wbTarget.Name& *"!MacroName")
ActiveWorkbook.Close SaveChanges:=False


x = 1 + 1


Next


MsgBox "Finished Looping All workbooks from Log and running their Sub
within"


End Sub


--
Dave Peterson- Hide quoted text -

- Show quoted text -


  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 29
Default How to properly read Value2 Range ?

Worked like a charm, thanks dave!!!!

RompStar

On Jul 30, 11:05*am, Dave Peterson wrote:
First, Value2 is not a good variable name to use for your array. *It looks way
too much like the .Value2 property of a range. *And it may not confuse excel,
but it would confuse me!

Second, you don't need to have the name in the second column. *In fact, I think
that if you have the name twice -- once in column A and once in column B, then
sooner or later, there's gonna be a mistake where they don't match. *I wouldn't
do this.

Third, you close without saving. *Is that for testing only, or did you really
mean that?

Anyway, this is untested, but it did compile.

Option Explicit
Sub Add_Buttons()

* * *Dim wsLog As Worksheet
* * *Dim wsLogRange As Range
* * *Dim tempWkbk As Workbook
* * *Dim LastRow As Long
* * *Dim RangeCell As Range

* * *Set wsLog = ActiveWorkbook.Worksheets("Log")

* * *With wsLog
* * * * *LastRow = .Range("A" & .Rows.Count).End(xlUp).Row
* * * * *'be careful with those leading dots!
* * * * *Set wsLogRange = .Range("A2:A" & LastRow)
* * *End With

* * *For Each RangeCell In wsLogRange.Cells

* * * * *Set tempWkbk = Nothing
* * * * *On Error Resume Next
* * * * *Set tempWkbk = Workbooks.Open(Filename:=RangeCell.Value)
* * * * *On Error GoTo 0

* * * * *RangeCell.offset(0, 1).value = "" 'empty means ok.

* * * * *If tempWkbk Is Nothing Then
* * * * * * *RangeCell.Offset(0, 1).Value = "Not found!"
* * * * *Else
* * * * * * *Application.Run "'" & tempWkbk.Name & "'!ADD_BUTTONS"
* * * * * * *tempWkbk.Close savechanges:=False 'why false????
* * * * *End If
* * *Next RangeCell

* * *MsgBox "Finished Looping All workbooks from Log " _
* * * * * * *& "and running their Sub within"

End Sub

On 07/30/2010 11:35, RompStar wrote:





I have two Value2(1) and Value(2) in this test..


Value2(1) is variant (1 to 2)
Value2(2) is variant (1 to 2)


in the first loop it read it right, Value2(1) 1,1 and 1,2


but in the second loop, it don't read right Value(2) 2,1 2,2


Please help if you know how to read it, thanks!


Basically the Range that it reads and sticks into Value2 array ? is
starting at A2:B last row, in this test it is A2:B3 as the range.


A2 has fullpath * filename.xls
B3 has * filename.xls *needed top execute the Sub within each workbook
that is open, as I understand it


Basically the idea of this VBA Proc is to read from my log which
contains \\network\full\path\filename.xls, open each workbook in the
range and then run a Sub within each one called ADD_BUTTONS.


This works on the first workbooks in range, but then for the Next
Value2:


* * *FileToOpen = Value2(x, 1) * *- this one has a filename..xls
* * *WrkBookName = Value2(x, 2) * - and this one goes blank


FileToOpen has the fullpath& *FileName,xls
WrkBookName has just the FineName.xls * when I put a watch on them,
they have the right values, but I think I read it wrong
?


Please advise, maybe I am doing it wrong, not a guru :- )


Sub Add_Buttons()


Dim wsLogName As String
Dim wsLog As Worksheet
Dim wsLogRange As Range
Dim FileToOpen, WrkBookName As String
Dim RangeCell As Object


wsLogName = ActiveWorkbook.Name
Set wsLog = ActiveSheet


With wsLog
* * *Sheets("Log").Activate
* * *lastrow = .Range("A"& *.Rows.Count).End(xlUp).Row
* * *Set wsLogRange = Range("A2:B"& *lastrow)
End With


x = 1


For Each Value2 In wsLogRange


* * *FileToOpen = Value2(x, 1)
* * *WrkBookName = Value2(x, 2)
* * *On Error Resume Next


* * *Workbooks.Open Filename:=FileToOpen
' * *Application.Run (WrkBookName& *"!ADD_BUTTONS") * * * * *' this
works for manual test: "'test.xls'!ADD_BUTTONS"
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *' for auto
test: * Application.Run (wbTarget.Name& *"!MacroName")
ActiveWorkbook.Close SaveChanges:=False


x = 1 + 1


Next


MsgBox "Finished Looping All workbooks from Log and running their Sub
within"


End Sub


--
Dave Peterson- Hide quoted text -

- Show quoted text -


  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 703
Default How to properly read Value2 Range ?

Hi

First you have to declare FileToOpen explicit as String, else it will
be declared as Variant. Second, only loop through column A and
remember that Value2 shift one row down at each iteration, so you do
not have to increment X.


Sub Add_Buttons()

Dim wsLogName As String
Dim wsLog As Worksheet
Dim wsLogRange As Range
Dim FileToOpen As String, WrkBookName As String
Dim RangeCell As Object

wsLogName = ActiveWorkbook.Name
Set wsLog = ActiveSheet

With wsLog
Sheets("Log").Activate
lastrow = .Range("A" & .Rows.Count).End(xlUp).Row
Set wsLogRange = Range("A2:A" & lastrow)
End With

For Each Value2 In wsLogRange

FileToOpen = Value2 '(1, 1)
WrkBookName = Value2(1, 2)
On Error Resume Next
Debug.Print FileToOpen & " - " & WrkBookName

Workbooks.Open Filename:=FileToOpen
' Application.Run (WrkBookName & "!ADD_BUTTONS") ' this
works for manual test: "'test.xls'!ADD_BUTTONS"
' for auto
test: Application.Run (wbTarget.Name & "!MacroName")
ActiveWorkbook.Close SaveChanges:=False
Next

MsgBox "Finished Looping All workbooks from Log and running their Sub
Within "
End Sub


Best regards,
Per

On 30 Jul., 18:35, RompStar wrote:
I have two Value2(1) and Value(2) in this test..

Value2(1) is variant (1 to 2)
Value2(2) is variant (1 to 2)

in the first loop it read it right, Value2(1) 1,1 and 1,2

but in the second loop, it don't read right Value(2) 2,1 2,2

Please help if you know how to read it, thanks!

Basically the Range that it reads and sticks into Value2 array ? is
starting at A2:B last row, in this test it is A2:B3 as the range.

A2 has fullpath * filename.xls
B3 has * filename.xls *needed top execute the Sub within each workbook
that is open, as I understand it

Basically the idea of this VBA Proc is to read from my log which
contains \\network\full\path\filename.xls, open each workbook in the
range and then run a Sub within each one called ADD_BUTTONS.

This works on the first workbooks in range, but then for the Next
Value2:

* * FileToOpen = Value2(x, 1) * *- this one has a filename.xls
* * WrkBookName = Value2(x, 2) * - and this one goes blank

FileToOpen has the fullpath & FileName,xls
WrkBookName has just the FineName.xls * when I put a watch on them,
they have the right values, but I think I read it wrong
?

Please advise, maybe I am doing it wrong, not a guru :- )

Sub Add_Buttons()

Dim wsLogName As String
Dim wsLog As Worksheet
Dim wsLogRange As Range
Dim FileToOpen, WrkBookName As String
Dim RangeCell As Object

wsLogName = ActiveWorkbook.Name
Set wsLog = ActiveSheet

With wsLog
* * Sheets("Log").Activate
* * lastrow = .Range("A" & .Rows.Count).End(xlUp).Row
* * Set wsLogRange = Range("A2:B" & lastrow)
End With

x = 1

For Each Value2 In wsLogRange

* * FileToOpen = Value2(x, 1)
* * WrkBookName = Value2(x, 2)
* * On Error Resume Next

* * Workbooks.Open Filename:=FileToOpen
' * *Application.Run (WrkBookName & "!ADD_BUTTONS") * * * * *' this
works for manual test: "'test.xls'!ADD_BUTTONS"
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ' for auto
test: * Application.Run (wbTarget.Name & "!MacroName")
ActiveWorkbook.Close SaveChanges:=False

x = 1 + 1

Next

MsgBox "Finished Looping All workbooks from Log and running their Sub
within"

End Sub




  #6   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 29
Default How to properly read Value2 Range ?

Thanks Per, its good to see how different people do things, also
greatly appreciated, thanks and have a nice weekend!

RompStar

On Jul 30, 2:19*pm, Per Jessen wrote:
Hi

First you have to declare FileToOpen explicit as String, else it will
be declared as Variant. Second, only loop through column A and
remember that Value2 shift one row down at each iteration, so you do
not have to increment X.

Sub Add_Buttons()

Dim wsLogName As String
Dim wsLog As Worksheet
Dim wsLogRange As Range
Dim FileToOpen As String, WrkBookName As String
Dim RangeCell As Object

wsLogName = ActiveWorkbook.Name
Set wsLog = ActiveSheet

With wsLog
* * Sheets("Log").Activate
* * lastrow = .Range("A" & .Rows.Count).End(xlUp).Row
* * Set wsLogRange = Range("A2:A" & lastrow)
End With

For Each Value2 In wsLogRange

* * FileToOpen = Value2 '(1, 1)
* * WrkBookName = Value2(1, 2)
* * On Error Resume Next
* * Debug.Print FileToOpen & " - " & WrkBookName

* * Workbooks.Open Filename:=FileToOpen
* *' Application.Run (WrkBookName & "!ADD_BUTTONS") * * * * *' this
works for manual test: "'test.xls'!ADD_BUTTONS"
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ' for auto
test: * Application.Run (wbTarget.Name & "!MacroName")
* * ActiveWorkbook.Close SaveChanges:=False
Next

MsgBox "Finished Looping All workbooks from Log and running their Sub
Within "
End Sub

Best regards,
Per

On 30 Jul., 18:35, RompStar wrote:



I have two Value2(1) and Value(2) in this test..


Value2(1) is variant (1 to 2)
Value2(2) is variant (1 to 2)


in the first loop it read it right, Value2(1) 1,1 and 1,2


but in the second loop, it don't read right Value(2) 2,1 2,2


Please help if you know how to read it, thanks!


Basically the Range that it reads and sticks into Value2 array ? is
starting at A2:B last row, in this test it is A2:B3 as the range.


A2 has fullpath * filename.xls
B3 has * filename.xls *needed top execute the Sub within each workbook
that is open, as I understand it


Basically the idea of this VBA Proc is to read from my log which
contains \\network\full\path\filename.xls, open each workbook in the
range and then run a Sub within each one called ADD_BUTTONS.


This works on the first workbooks in range, but then for the Next
Value2:


* * FileToOpen = Value2(x, 1) * *- this one has a filename.xls
* * WrkBookName = Value2(x, 2) * - and this one goes blank


FileToOpen has the fullpath & FileName,xls
WrkBookName has just the FineName.xls * when I put a watch on them,
they have the right values, but I think I read it wrong
?


Please advise, maybe I am doing it wrong, not a guru :- )


Sub Add_Buttons()


Dim wsLogName As String
Dim wsLog As Worksheet
Dim wsLogRange As Range
Dim FileToOpen, WrkBookName As String
Dim RangeCell As Object


wsLogName = ActiveWorkbook.Name
Set wsLog = ActiveSheet


With wsLog
* * Sheets("Log").Activate
* * lastrow = .Range("A" & .Rows.Count).End(xlUp).Row
* * Set wsLogRange = Range("A2:B" & lastrow)
End With


x = 1


For Each Value2 In wsLogRange


* * FileToOpen = Value2(x, 1)
* * WrkBookName = Value2(x, 2)
* * On Error Resume Next


* * Workbooks.Open Filename:=FileToOpen
' * *Application.Run (WrkBookName & "!ADD_BUTTONS") * * * * *' this
works for manual test: "'test.xls'!ADD_BUTTONS"
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ' for auto
test: * Application.Run (wbTarget.Name & "!MacroName")
ActiveWorkbook.Close SaveChanges:=False


x = 1 + 1


Next


MsgBox "Finished Looping All workbooks from Log and running their Sub
within"


End Sub- Hide quoted text -


- Show quoted text -


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
Range.Value2 in C# (Excel 2007, VSTO 2008)? Fabz[_2_] Excel Programming 2 December 8th 09 02:51 PM
Help with Range.Value2, Range.Text and UDFs JsjsLim Excel Programming 6 June 26th 09 05:30 AM
How to Bind VBA Variable to Range().Value2 Property MachAngle Excel Programming 3 April 18th 09 02:26 AM
Excel & C# NullReference Error when trying to set Range.Value2 Chuck Excel Programming 1 August 2nd 06 11:01 PM
Range.Value2 is failing for lenghty strings Naresh Mirkhelkar Excel Programming 4 June 9th 06 02:54 PM


All times are GMT +1. The time now is 06:43 PM.

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"