Home |
Search |
Today's Posts |
#1
![]()
Posted to microsoft.public.excel.misc
|
|||
|
|||
![]() I am trying to make an excel macro that can browse for a file to get the path to the file for copy purposes. I have figured out how to do this on a PC with this code: Code: -------------------- Option Explicit Type thOPENFILENAME lStructSize As Long hwndOwner As Long hInstance As Long strFilter As String strCustomFilter As String nMaxCustFilter As String nFilterIndex As Long strFile As String nMaxFile As Long strFileTitle As String nMaxFileTitle As Long strInitialDir As String strTitle As String Flags As Long nFileOffset As Integer nFileExtension As Integer strDefExt As String lCustData As Long lpfnHook As Long lpTemplateName As String End Type Declare Function th_apiGetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" (OFN As thOPENFILENAME) As Boolean Declare Function th_apiGetSaveFileName Lib "comdlg32.dll" Alias "GetSaveFileNameA" (OFN As thOPENFILENAME) As Boolean Declare Function CommDlgExtendetError Lib "commdlg32.dll" () As Long Private Const thOFN_READONLY = &H1 Private Const thOFN_OVERWRITEPROMPT = &H2 Private Const thOFN_HIDEREADONLY = &H4 Private Const thOFN_NOCHANGEDIR = &H8 Private Const thOFN_SHOWHELP = &H10 Private Const thOFN_NOVALIDATE = &H100 Private Const thOFN_ALLOWMULTISELECT = &H200 Private Const thOFN_EXTENSIONDIFFERENT = &H400 Private Const thOFN_PATHMUSTEXIST = &H800 Private Const thOFN_FILEMUSTEXIST = &H1000 Private Const thOFN_CREATEPROMPT = &H2000 Private Const thOFN_SHAREWARE = &H4000 Private Const thOFN_NOREADONLYRETURN = &H8000 Private Const thOFN_NOTESTFILECREATE = &H10000 Private Const thOFN_NONETWORKBUTTON = &H20000 Private Const thOFN_NOLONGGAMES = &H40000 Private Const thOFN_EXPLORER = &H80000 Private Const thOFN_NODEREFERENCELINKS = &H100000 Private Const thOFN_LONGNAMES = &H200000 Sub AddRosterFromFile() Dim strFilter As String Dim lngFlags As Long Dim FileName As String strFilter = thAddFilterItem(strFilter, "Excel Files (*.xls)", "*.XLS") strFilter = thAddFilterItem(strFilter, "All Files (*.*)", "*.*") FileName = thCommonFileOpenSave(InitialDir:=CurDir(), Filter:=strFilter, FilterIndex:=2, Flags:=lngFlags, DialogTitle:="File Browser") If FileName < "" Then Dim first, last As Integer Workbooks.Open FileName:=FileName Debug.Print Hex(lngFlags) Sheets("Sheet3").Select Cells.Select Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom Range("A2").Select Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy Windows("Gradebook.xls").Activate first = ActiveSheet.Range("A65536").End(xlUp).Row + 1 Range("A" & first).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False last = ActiveSheet.Range("A65536").End(xlUp).Row + 1 Windows(Mid(FileName, Len(CurDir()) + 2, Len(FileName) - Len(CurDir()))).Activate ActiveWindow.Close Windows("Gradebook.xls").Activate 'Enter sort formulas Range("E" & first, "E" & last).Select Selection.FormulaR1C1 = "=MID(RC[-2],1,LEN(RC[-2])-5)" End If End Sub Function GetOpenFile(Optional varDirectory As Variant, Optional varTitleForDialog As Variant) As Variant Dim strFilter As String Dim lngFlags As Long Dim varFileName As Variant lngFlags = thOFN_FILEMUSTEXIST Or thOFN_HIDEREADONLY Or thOFN_NOCHANGEDIR If IsMissing(varDirectory) Then varDirectory = "" End If If IsMissing(varTitleForDialog) Then varTitleForDialog = "" End If strFilter = thAddFilterItem(strFilter, "Excel (*.xls)", "*.XLS") varFileName = thCommonFileOpenSave(OpenFile:=True, InitialDir:=varDirectory, Filter:=strFilter, Flags:=lngFlags, DialogTitle:=varTitleForDialog) If Not IsNull(varFileName) Then varFileName = TrimNull(varFileName) End If GetOpenFile = varFileName End Function Function thCommonFileOpenSave(Optional ByRef Flags As Variant, Optional ByVal InitialDir As Variant, Optional ByVal Filter As Variant, _ Optional ByVal FilterIndex As Variant, Optional ByVal DefaultEx As Variant, Optional ByVal FileName As Variant, _ Optional ByVal DialogTitle As Variant, Optional ByVal hwnd As Variant, Optional ByVal OpenFile As Variant) As Variant Dim OFN As thOPENFILENAME Dim strFileName As String Dim FileTitle As String Dim fResult As Boolean If IsMissing(InitialDir) Then InitialDir = CurDir If IsMissing(Filter) Then Filter = "" If IsMissing(FilterIndex) Then FilterIndex = 1 If IsMissing(Flags) Then Flags = 0& If IsMissing(DefaultEx) Then DefaultEx = "" If IsMissing(FileName) Then FileName = "" If IsMissing(DialogTitle) Then DialogTitle = "" If IsMissing(hwnd) Then hwnd = 0 If IsMissing(OpenFile) Then OpenFile = True strFileName = Left(FileName & String(256, 0), 256) FileTitle = String(256, 0) With OFN .lStructSize = Len(OFN) .hwndOwner = hwnd .strFilter = Filter .nFilterIndex = FilterIndex .strFile = strFileName .nMaxFile = Len(strFileName) .strFileTitle = FileTitle .nMaxFileTitle = Len(FileTitle) .strTitle = DialogTitle .Flags = Flags .strDefExt = DefaultEx .strInitialDir = InitialDir .hInstance = 0 .lpfnHook = 0 .strCustomFilter = String(255, 0) .nMaxCustFilter = 255 End With If OpenFile Then fResult = th_apiGetOpenFileName(OFN) Else fResult = th_apiGetSaveFileName(OFN) End If If fResult Then If Not IsMissing(Flags) Then Flags = OFN.Flags thCommonFileOpenSave = TrimNull(OFN.strFile) Else thCommonFileOpenSave = vbNullString End If End Function Function thAddFilterItem(strFilter As String, strDescription As String, Optional varItem As Variant) As String If IsMissing(varItem) Then varItem = "*.*" thAddFilterItem = strFilter & strDescription & vbNullChar & varItem & vbNullChar End Function Private Function TrimNull(ByVal strItem As String) As String Dim intPos As Integer intPos = InStr(strItem, vbNullChar) If intPos 0 Then TrimNull = Left(strItem, intPos - 1) Else TrimNull = strItem End If End Function -------------------- Anyone know how to do this on a mac, and also how to set it up so it automaticly uses the correct one from which operating system is curently running? John Vickers -- John Vickers ------------------------------------------------------------------------ John Vickers's Profile: http://www.excelforum.com/member.php...o&userid=31551 View this thread: http://www.excelforum.com/showthread...hreadid=513751 |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
Excel file automatically opens | Excel Discussion (Misc queries) | |||
can't browse file | Excel Discussion (Misc queries) | |||
cannot open excel file, please help!!! | Excel Discussion (Misc queries) | |||
Changing Export Delimiter | Excel Discussion (Misc queries) | |||
Locating a file in excel with a partial file name. | Excel Discussion (Misc queries) |