I need to capture the filename and file path of where - excel

I need to capture the filename and file path of where Project exports to Excel,
I use the code;
FileSaveAs FormatID:="MSProject.ACE", Map:="Map 1"
but can't work out how to capture where the user has exported the file to (the excel version)
Thanks
Ronan

Try to use your own dialog box and then save the file:
Dim SavePath As Variant
With Application.FileDialog(msoFileDialogSaveAs)
.Title = "Please select location to save file"
If .Show = True Then
SavePath = .SelectedItems(1)
Else
SavePath = False
End If
End With
FileSaveAs Name:= SavePath, FormatID:="MSProject.ACE", Map:="Map 1"

Related

create multiple sheets as pdf

I have this section of code that asks for a folder to save PDFs to. If you cancel or close the application, the path of the file is still selected. I want to select the file from the path only if you don't select a folder, and I don't want any action to be taken if you press cancel or close the application.
Dim folder_path as string
Dim sh as worksheet
Dim filename as string
with application.filedialog(msofiledialogfolderpicker)
.title = "Select the folder path"
if .show = -1 then
Folder_path = .selectedItems(1)
else
Folder_path = Thisworkbook.path
end if
end with```

Default file selection using Application.GetOpenFilename

I use the following to open a dialog box to select files.
fnameListCurr = Application.GetOpenFilename(FileFilter:="CSV Files (*.csv),*.csv", Title:="Choose CSV files to import", MultiSelect:=True)
However, when I do this, nothing is selected by default. Is it possible to have the file selector dialog open with certain files or all files that meet the filter criteria already selected?
If you need to set an initial Fine name, use FileDialog instead. Try the next code, please:
Sub filedialogSelectSomething()
Dim fileName
With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = True
.Title = "Choose CSV files to import"
.InitialFileName = "Your Path\Test*.csv"
.Filters.Add "CSV Files", "*.csv", 1
If .Show = -1 Then
fileName = .SelectedItems(1)
'or use them all...
End If
End With
Debug.Print fileName
End Sub
Look here to better understand how InitialFileName overrides the file filter settings...

Get Folder Path as String

I'm relatively new with VBA and currently working on a macro that will change from PC to PC, for test purposes I'm using the direct path:
Sub VIP()
'Define Folder Paths & Workbooks
Workbooks.Open ("C:\Users\j.lopez\Documents\AdHoc Reports\Serrano\Daily VIP Report Master.xlsx")
to open the workbooks, but eventually that path will change, so i was thinking to make the user select the folder path with:
Application.FileDialog(msoFileDialogFolderPicker)
But im lost, how can i properly:
1.- Ask for a user to select the folder containing the necessary files for the macro to work with
2.- Trap that path
3.- Replace it in the WorkBooks.Open
1. Ask for a user to select the folder containing the necessary files for the macro to work with:
I would recommend you to use FolderDialog and Show the Dialog to the user, and let him/her choose the folder. Next, check whether the required files exist in the selected directory. Use System.IO.File.Exists(<path>)=<boolean> .
2. Trap that path:
Just after validating the folder path, you can save the folder path in a variable.
Then do an assignment statement,
Let's say you created a variable 'path', so, path = path & "\" & <file_name> .
And there you have it, stored in 'path'.
3. Replace it in the WorkBooks.Open:
Then use the following code:
Workbooks.Open ("C:\Users\j.lopez\Documents\AdHoc Reports\Serrano\" & path)
Selecting file or folder with Browse File Option with VBA
' To Select File
sub select_file()
selected_file = Application.GetOpenFilename(, , "Select File", , False)
End sub
' To Select Folder
Sub selectfolder()
zhr_folder = GetFolder()
End sub
Function GetFolder() As String
Dim fldr As FileDialog
Dim sItem As String
Set fldr = Application.FileDialog(msoFileDialogFolderPicker)
With fldr
.Title = "Select a Folder"
.AllowMultiSelect = False
.InitialFileName = ""
If .Show <> -1 Then GoTo NextCode
sItem = .SelectedItems(1)
End With
NextCode:
GetFolder = sItem
Set fldr = Nothing
End Function
Post that you can combine both file and folder names to adapt your needs
Source: https://play.google.com/store/apps/details?id=com.vbausefulcodes.dp
EDIT-
This code was adapted to my needs, and i found it on this YouTube Video
Dim diaFolder As FileDialog
Set diaFolder = Application.FileDialog(msoFileDialogFolderPicker)
diaFolder.AllowMultiSelect = False
diaFolder.Show
fle = diaFolder.SelectedItems(1)
Range("A15") = fle
Set diaFolder = Nothing
'Opening WorkBooks
Workbooks.Open (fle & "\Daily Sports VIP Report.xlsx")
video for Reference
- https://www.youtube.com/watch?v=Y4PG2qr9tRM

Consolidating files

I want to consolidate all Excel files that are in specific folder. I created an Input Box for the Path of the folder where I have files to merge. Then I have formula for the Filename and that formula does not work. It gives value Filename="". Why does it happen? How can it be fixed?
Dim Path as String
Dim Filename as String
Path = InputBox("Paste the path of the folder with files to consolidate")
Filename = Dir(Path & "*.xls*", vbNormal)
Why not use Excel's own folder picker? Try this code.
Function PickedFolder() As String
Dim Dlg As FileDialog
Dim Ffn As String
Ffn = Application.DefaultFilePath & "\"
Set Dlg = Application.FileDialog(FileDialogType:=msoFileDialogFolderPicker)
With Dlg
.Title = "Select the folder to consolidate"
.InitialView = msoFileDialogViewList
.InitialFileName = Ffn
.AllowMultiSelect = False
If .Show = True Then PickedFolder = .SelectedItems(1)
End With
End Function
The function returns the path the user selects. You can enter it in your text box or proceed directly to consolidate the files found in it.

Importing folder to Excel (FileDialogFolderPicker) using VBA

I'm using the next code in order to select a folder from a certain path and import all the files inside it:
Function GetFolder()
Dim fd As FileDialog
Set fd = Application.FileDialog(msoFileDialogFolderPicker)
fd.Title = "Select Excel Workbook(s) Folder"
Dim vrtSelectedItem As Variant
With fd
If .Show = -1 Then
For Each vrtSelectedItem In .SelectedItems
GetFolder = vrtSelectedItem
Next vrtSelectedItem
Else
End If
End With
Set fd = Nothing
End Function
When the Folder Picker window opens it start on the desktop. Is there a way to make it go to a specific path upon opening? or open where the excel file itself is located?
You would update the InitialFileName property, and you could set it to use the ActiveWorkbook.Path
You'll need to make sure that you include the ending slash, or it will only display the previous folder instead of the folder you want.
Also, there is no reason to loop through the .SelectedItems collection because the FolderPicker FileDialog doesn't support mutliple selections.
In summary, I think this is the code you're looking for:
Function GetFolder()
With Application.FileDialog(msoFileDialogFolderPicker)
.InitialFileName = ActiveWorkbook.Path & Application.PathSeparator
.Title = "Select Excel Workbook(s) Folder"
If .Show = True Then
GetFolder = .SelectedItems(1)
Else
GetFolder = False
End If
End With
End Function
add a line like this before .Show:
fd.InitialFileName = "c:\whateverInitialDirectory"

Resources