ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Browse for folder - not selecting folder (https://www.excelbanter.com/excel-programming/417194-re-browse-folder-not-selecting-folder.html)

Trish Smith

Browse for folder - not selecting folder
 
Hi Bob,

I'm afraid something simpler just confused me - just a beginner!

Which bit does it replace or add to and how do I loop through files in the
folder thereafter.

I haven't even tried it out - chicken that I am!

Thank you :-)




--
Trish


"Bob Phillips" wrote:

Something simpler

With Application.FileDialog(msoFileDialogFolderPicker)

.AllowMultiSelect = False
If .Show = -1 Then

MsgBox .SelectedItems(1)
End If
End With


--
__________________________________
HTH

Bob

"Trish Smith" wrote in message
...
Hi everyone,

I found a previous message about browsing to a folder which was answered
but
I've not been able to follow the steps that were taken.
http://www.microsoft.com/office/comm...7-d241d7a138d4

Now, I'm copying this bit from the thread because I don't understand
what's
going on, sorry ! I've taken out some bits where it says which code is
Chip
Pearson's and Barb Reinhardt's

Function BrowseFolder(Optional Caption As String = "") As String

Dim BrowseInfo As BrowseInfo
Dim FolderName As String
Dim ID As Long
Dim Res As Long

With BrowseInfo
.hOwner = 0
.pidlRoot = 0
.pszDisplayName = String$(MAX_PATH, vbNullChar)
.lpszINSTRUCTIONS = Caption
.ulFlags = BIF_RETURNONLYFSDIRS
.lpfn = 0
End With
FolderName = String$(MAX_PATH, vbNullChar)
ID = SHBrowseForFolderA(BrowseInfo)
If ID Then
Res = SHGetPathFromIDListA(ID, FolderName)
If Res Then
BrowseFolder = Left$(FolderName, InStr(FolderName, _
vbNullChar) - 1)
End If
End If

End Function

Dim myWB As Workbook
Dim AutoSecurity As MsoAutomationSecurity
'Dim myPath As String
Dim myName As String
Dim Path As String
Dim Prompt As String
Dim Title As String

Path = BrowseFolder("Select A Folder")
If Path = "" Then
Prompt = "You didn't select a folder. The procedure has been
canceled."
Title = "Procedure Canceled"
MsgBox Prompt, vbCritical, Title
Else
Prompt = "You selected the following path:" & vbNewLine & Path
Title = "Procedure Completed"
MsgBox Prompt, vbInformation, Title
End If

myName = Dir(Path)
Do
Debug.Print myName

AutoSecurity = Application.AutomationSecurity
Application.AutomationSecurity = msoAutomationSecurityLow
Set myWB = Workbooks.Open(myName)
Call UnprotectWB(myWB)
Application.AutomationSecurity = AutoSecurity
On Error Resume Next

myName = Dir ' Get next entry.
Loop While myName < ""

End Sub
Sub UnprotectWB(myWB As Workbook)
Dim myWS As Worksheet
'If worksheets are password protected, this won't work

myWB.Unprotect
For Each myWS In myWB.Worksheets
myWS.Unprotect
Next myWS
End Sub


Dave Peterson answered and said this
I'd do this:

after this line:
Path = BrowseFolder("Select A Folder")
if right(path,1) < "\" then
path = path & "\"
end if

Then for the dir statement:

myname = dir(mypath & "*.xls")

and also to not use VBA variable names but although I've tried to make
changes not sure doing right thing

myPath = BrowseFolder("Select A Folder") 'myPath = BrowseFolder("Select A
Folder")
If Right(myPath, 1) < "\" Then 'If myPath = "" Then
myFolderPath = myPath & "\"
Prompt = "You didn't select a folder. The procedure has been canceled."
Title = "Procedure Canceled"
MsgBox Prompt, vbCritical, Title
Else
Prompt = "You selected the following path:" & vbNewLine & myFolderPath
Title = "Procedure Completed"
MsgBox Prompt, vbInformation, Title
End If

myName = Dir(myFolderPath & "*.xls")

at the moment I get the messagebox saying I haven't selected a folder.

Can anyone help please

thank you

--
Trish





Bob Phillips[_3_]

Browse for folder - not selecting folder
 
Where you call the BrowseFunction folder, don't bother, replace that call
with the code I gave.

Try these things, you can't do any harm as long as you save your workbook
first, and don't save it again if something happens.

--
__________________________________
HTH

Bob

"Trish Smith" wrote in message
...
Hi Bob,

I'm afraid something simpler just confused me - just a beginner!

Which bit does it replace or add to and how do I loop through files in the
folder thereafter.

I haven't even tried it out - chicken that I am!

Thank you :-)




--
Trish


"Bob Phillips" wrote:

Something simpler

With Application.FileDialog(msoFileDialogFolderPicker)

.AllowMultiSelect = False
If .Show = -1 Then

MsgBox .SelectedItems(1)
End If
End With


--
__________________________________
HTH

Bob

"Trish Smith" wrote in message
...
Hi everyone,

I found a previous message about browsing to a folder which was
answered
but
I've not been able to follow the steps that were taken.
http://www.microsoft.com/office/comm...7-d241d7a138d4

Now, I'm copying this bit from the thread because I don't understand
what's
going on, sorry ! I've taken out some bits where it says which code is
Chip
Pearson's and Barb Reinhardt's

Function BrowseFolder(Optional Caption As String = "") As String

Dim BrowseInfo As BrowseInfo
Dim FolderName As String
Dim ID As Long
Dim Res As Long

With BrowseInfo
.hOwner = 0
.pidlRoot = 0
.pszDisplayName = String$(MAX_PATH, vbNullChar)
.lpszINSTRUCTIONS = Caption
.ulFlags = BIF_RETURNONLYFSDIRS
.lpfn = 0
End With
FolderName = String$(MAX_PATH, vbNullChar)
ID = SHBrowseForFolderA(BrowseInfo)
If ID Then
Res = SHGetPathFromIDListA(ID, FolderName)
If Res Then
BrowseFolder = Left$(FolderName, InStr(FolderName, _
vbNullChar) - 1)
End If
End If

End Function

Dim myWB As Workbook
Dim AutoSecurity As MsoAutomationSecurity
'Dim myPath As String
Dim myName As String
Dim Path As String
Dim Prompt As String
Dim Title As String

Path = BrowseFolder("Select A Folder")
If Path = "" Then
Prompt = "You didn't select a folder. The procedure has been
canceled."
Title = "Procedure Canceled"
MsgBox Prompt, vbCritical, Title
Else
Prompt = "You selected the following path:" & vbNewLine & Path
Title = "Procedure Completed"
MsgBox Prompt, vbInformation, Title
End If

myName = Dir(Path)
Do
Debug.Print myName

AutoSecurity = Application.AutomationSecurity
Application.AutomationSecurity = msoAutomationSecurityLow
Set myWB = Workbooks.Open(myName)
Call UnprotectWB(myWB)
Application.AutomationSecurity = AutoSecurity
On Error Resume Next

myName = Dir ' Get next entry.
Loop While myName < ""

End Sub
Sub UnprotectWB(myWB As Workbook)
Dim myWS As Worksheet
'If worksheets are password protected, this won't work

myWB.Unprotect
For Each myWS In myWB.Worksheets
myWS.Unprotect
Next myWS
End Sub


Dave Peterson answered and said this
I'd do this:

after this line:
Path = BrowseFolder("Select A Folder")
if right(path,1) < "\" then
path = path & "\"
end if

Then for the dir statement:

myname = dir(mypath & "*.xls")

and also to not use VBA variable names but although I've tried to make
changes not sure doing right thing

myPath = BrowseFolder("Select A Folder") 'myPath = BrowseFolder("Select
A
Folder")
If Right(myPath, 1) < "\" Then 'If myPath = "" Then
myFolderPath = myPath & "\"
Prompt = "You didn't select a folder. The procedure has been canceled."
Title = "Procedure Canceled"
MsgBox Prompt, vbCritical, Title
Else
Prompt = "You selected the following path:" & vbNewLine & myFolderPath
Title = "Procedure Completed"
MsgBox Prompt, vbInformation, Title
End If

myName = Dir(myFolderPath & "*.xls")

at the moment I get the messagebox saying I haven't selected a folder.

Can anyone help please

thank you

--
Trish







Trish Smith

Browse for folder - not selecting folder
 
Sorry Bob,

Still over my head, I don't understand what the code is doing enough to work
out what's doing what. I'm at the stage where I can make little changes but a
lot of the terminology and logic escapes me.

I can see that this selects a folder but how do I then tell it to use that
folder and loop through the files in it (and then do something in each file
eg unprotect sheet).

I was brave enough to run it this time but didn't get beyond selecting the
folder.

Thanks for your help :-)
--
Trish


"Bob Phillips" wrote:

Where you call the BrowseFunction folder, don't bother, replace that call
with the code I gave.

Try these things, you can't do any harm as long as you save your workbook
first, and don't save it again if something happens.

--
__________________________________
HTH

Bob

"Trish Smith" wrote in message
...
Hi Bob,

I'm afraid something simpler just confused me - just a beginner!

Which bit does it replace or add to and how do I loop through files in the
folder thereafter.

I haven't even tried it out - chicken that I am!

Thank you :-)




--
Trish


"Bob Phillips" wrote:

Something simpler

With Application.FileDialog(msoFileDialogFolderPicker)

.AllowMultiSelect = False
If .Show = -1 Then

MsgBox .SelectedItems(1)
End If
End With


--
__________________________________
HTH

Bob

"Trish Smith" wrote in message
...
Hi everyone,

I found a previous message about browsing to a folder which was
answered
but
I've not been able to follow the steps that were taken.
http://www.microsoft.com/office/comm...7-d241d7a138d4

Now, I'm copying this bit from the thread because I don't understand
what's
going on, sorry ! I've taken out some bits where it says which code is
Chip
Pearson's and Barb Reinhardt's

Function BrowseFolder(Optional Caption As String = "") As String

Dim BrowseInfo As BrowseInfo
Dim FolderName As String
Dim ID As Long
Dim Res As Long

With BrowseInfo
.hOwner = 0
.pidlRoot = 0
.pszDisplayName = String$(MAX_PATH, vbNullChar)
.lpszINSTRUCTIONS = Caption
.ulFlags = BIF_RETURNONLYFSDIRS
.lpfn = 0
End With
FolderName = String$(MAX_PATH, vbNullChar)
ID = SHBrowseForFolderA(BrowseInfo)
If ID Then
Res = SHGetPathFromIDListA(ID, FolderName)
If Res Then
BrowseFolder = Left$(FolderName, InStr(FolderName, _
vbNullChar) - 1)
End If
End If

End Function

Dim myWB As Workbook
Dim AutoSecurity As MsoAutomationSecurity
'Dim myPath As String
Dim myName As String
Dim Path As String
Dim Prompt As String
Dim Title As String

Path = BrowseFolder("Select A Folder")
If Path = "" Then
Prompt = "You didn't select a folder. The procedure has been
canceled."
Title = "Procedure Canceled"
MsgBox Prompt, vbCritical, Title
Else
Prompt = "You selected the following path:" & vbNewLine & Path
Title = "Procedure Completed"
MsgBox Prompt, vbInformation, Title
End If

myName = Dir(Path)
Do
Debug.Print myName

AutoSecurity = Application.AutomationSecurity
Application.AutomationSecurity = msoAutomationSecurityLow
Set myWB = Workbooks.Open(myName)
Call UnprotectWB(myWB)
Application.AutomationSecurity = AutoSecurity
On Error Resume Next

myName = Dir ' Get next entry.
Loop While myName < ""

End Sub
Sub UnprotectWB(myWB As Workbook)
Dim myWS As Worksheet
'If worksheets are password protected, this won't work

myWB.Unprotect
For Each myWS In myWB.Worksheets
myWS.Unprotect
Next myWS
End Sub


Dave Peterson answered and said this
I'd do this:

after this line:
Path = BrowseFolder("Select A Folder")
if right(path,1) < "\" then
path = path & "\"
end if

Then for the dir statement:

myname = dir(mypath & "*.xls")

and also to not use VBA variable names but although I've tried to make
changes not sure doing right thing

myPath = BrowseFolder("Select A Folder") 'myPath = BrowseFolder("Select
A
Folder")
If Right(myPath, 1) < "\" Then 'If myPath = "" Then
myFolderPath = myPath & "\"
Prompt = "You didn't select a folder. The procedure has been canceled."
Title = "Procedure Canceled"
MsgBox Prompt, vbCritical, Title
Else
Prompt = "You selected the following path:" & vbNewLine & myFolderPath
Title = "Procedure Completed"
MsgBox Prompt, vbInformation, Title
End If

myName = Dir(myFolderPath & "*.xls")

at the moment I get the messagebox saying I haven't selected a folder.

Can anyone help please

thank you

--
Trish







Bob Phillips[_3_]

Browse for folder - not selecting folder
 
Presumably, you already have some code to process each file? Integrate it
with that.

--
__________________________________
HTH

Bob

"Trish Smith" wrote in message
...
Sorry Bob,

Still over my head, I don't understand what the code is doing enough to
work
out what's doing what. I'm at the stage where I can make little changes
but a
lot of the terminology and logic escapes me.

I can see that this selects a folder but how do I then tell it to use that
folder and loop through the files in it (and then do something in each
file
eg unprotect sheet).

I was brave enough to run it this time but didn't get beyond selecting the
folder.

Thanks for your help :-)
--
Trish


"Bob Phillips" wrote:

Where you call the BrowseFunction folder, don't bother, replace that call
with the code I gave.

Try these things, you can't do any harm as long as you save your workbook
first, and don't save it again if something happens.

--
__________________________________
HTH

Bob

"Trish Smith" wrote in message
...
Hi Bob,

I'm afraid something simpler just confused me - just a beginner!

Which bit does it replace or add to and how do I loop through files in
the
folder thereafter.

I haven't even tried it out - chicken that I am!

Thank you :-)




--
Trish


"Bob Phillips" wrote:

Something simpler

With Application.FileDialog(msoFileDialogFolderPicker)

.AllowMultiSelect = False
If .Show = -1 Then

MsgBox .SelectedItems(1)
End If
End With


--
__________________________________
HTH

Bob

"Trish Smith" wrote in message
...
Hi everyone,

I found a previous message about browsing to a folder which was
answered
but
I've not been able to follow the steps that were taken.
http://www.microsoft.com/office/comm...7-d241d7a138d4

Now, I'm copying this bit from the thread because I don't
understand
what's
going on, sorry ! I've taken out some bits where it says which code
is
Chip
Pearson's and Barb Reinhardt's

Function BrowseFolder(Optional Caption As String = "") As String

Dim BrowseInfo As BrowseInfo
Dim FolderName As String
Dim ID As Long
Dim Res As Long

With BrowseInfo
.hOwner = 0
.pidlRoot = 0
.pszDisplayName = String$(MAX_PATH, vbNullChar)
.lpszINSTRUCTIONS = Caption
.ulFlags = BIF_RETURNONLYFSDIRS
.lpfn = 0
End With
FolderName = String$(MAX_PATH, vbNullChar)
ID = SHBrowseForFolderA(BrowseInfo)
If ID Then
Res = SHGetPathFromIDListA(ID, FolderName)
If Res Then
BrowseFolder = Left$(FolderName, InStr(FolderName, _
vbNullChar) - 1)
End If
End If

End Function

Dim myWB As Workbook
Dim AutoSecurity As MsoAutomationSecurity
'Dim myPath As String
Dim myName As String
Dim Path As String
Dim Prompt As String
Dim Title As String

Path = BrowseFolder("Select A Folder")
If Path = "" Then
Prompt = "You didn't select a folder. The procedure has been
canceled."
Title = "Procedure Canceled"
MsgBox Prompt, vbCritical, Title
Else
Prompt = "You selected the following path:" & vbNewLine & Path
Title = "Procedure Completed"
MsgBox Prompt, vbInformation, Title
End If

myName = Dir(Path)
Do
Debug.Print myName

AutoSecurity = Application.AutomationSecurity
Application.AutomationSecurity = msoAutomationSecurityLow
Set myWB = Workbooks.Open(myName)
Call UnprotectWB(myWB)
Application.AutomationSecurity = AutoSecurity
On Error Resume Next

myName = Dir ' Get next entry.
Loop While myName < ""

End Sub
Sub UnprotectWB(myWB As Workbook)
Dim myWS As Worksheet
'If worksheets are password protected, this won't work

myWB.Unprotect
For Each myWS In myWB.Worksheets
myWS.Unprotect
Next myWS
End Sub


Dave Peterson answered and said this
I'd do this:

after this line:
Path = BrowseFolder("Select A Folder")
if right(path,1) < "\" then
path = path & "\"
end if

Then for the dir statement:

myname = dir(mypath & "*.xls")

and also to not use VBA variable names but although I've tried to
make
changes not sure doing right thing

myPath = BrowseFolder("Select A Folder") 'myPath =
BrowseFolder("Select
A
Folder")
If Right(myPath, 1) < "\" Then 'If myPath = "" Then
myFolderPath = myPath & "\"
Prompt = "You didn't select a folder. The procedure has been
canceled."
Title = "Procedure Canceled"
MsgBox Prompt, vbCritical, Title
Else
Prompt = "You selected the following path:" & vbNewLine &
myFolderPath
Title = "Procedure Completed"
MsgBox Prompt, vbInformation, Title
End If

myName = Dir(myFolderPath & "*.xls")

at the moment I get the messagebox saying I haven't selected a
folder.

Can anyone help please

thank you

--
Trish










All times are GMT +1. The time now is 12:17 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com