![]() |
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 |
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 |
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 |
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