![]() |
#4
|
|||
|
|||
![]()
My code worked fine on my laptop using
SelectFileOpenDialog("Y:\Templates", "Hello World", "*.dotm") Based on the structures you are using your app would seem to be Autocad(?) (There is lots of similar stuff if you google "GetOpenFileName Lib "comdlg32.dll"" I don't have Autocad so my examples are using MS Word as the VBA host. When attempting to run your code it now gets stuck at Code:
OFN.hwndOwner = GetActiveWindow() I tried to get around this as follows Code:
OFN.hwndOwner = ActiveDocument.ActiveWindow.Hwnd ' GetActiveWindow() Code:
lReturn = GetOpenFileName(OFN) Your strategy of changing the 1 in Code:
fd.Filters.Add "Files", strFilter, 1 If the above doesn't work because you are in VBA for AutoCad then try looking at http://analystcave.com/vba-applicati...g-select-file/ as a random example of a google search. It may be that I can't resolve this problem to your using Autocad. The code below does not select a filename using your code (with my OFN.hwndOwner fudge, but my code works fine on my pc. I've also added a few more file filters so you can see how they work *IF* the file dialog works correctly. The code below is stand-alone when run in word sp please try it in an Office application first and then in Autocad. In autocad you will need to remove my OFN.hwndOwner fudge. Code:
Public Declare PtrSafe Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long Public Type OPENFILENAME lStructSize As Long hwndOwner As Long hInstance As Long lpstrFilter As String lpstrCustomFilter As String nMaxCustFilter As Long nFilterIndex As Long lpstrFile As String nMaxFile As Long lpstrFileTitle As String nMaxFileTitle As Long lpstrInitialDir As String lpstrTitle As String flags As Long nFileOffset As Integer nFileExtension As Integer lpstrDefExt As String lCustData As Long lpfnHook As Long lpTemplateName As String End Type Sub test() Dim myString As String myString = SelectFileOpenDialog("Y:\Templates", "Hello World", "*.dotm") Debug.Print myString myString = SelectFileOpenDialog2("Y:\Templates", "Hello World", "*.dotm") Debug.Print myString End Sub Public Function SelectFileOpenDialog(strInitDir As String, strTitle As String, strFilter As String) As String Dim strTemp As String Dim strTemp1 As String Dim pathStr As String Dim i As Long Dim n As Long Dim j As Long Dim OFN As OPENFILENAME Dim lReturn As Long Dim strFilterString As String Dim strFilename As String OFN.lStructSize = Len(OFN) strFilterString = Replace(strFilter, "|", Chr(0)) & Chr(0) OFN.lpstrFilter = strFilterString OFN.nFilterIndex = 1 OFN.lpstrFile = String(257, 0) OFN.nMaxFile = Len(OFN.lpstrFile) - 1 OFN.lpstrFileTitle = OFN.lpstrFile OFN.nMaxFileTitle = OFN.nMaxFile OFN.lpstrInitialDir = strInitDir OFN.lpstrTitle = strTitle OFN.hwndOwner = ActiveDocument.ActiveWindow.Hwnd ' GetActiveWindow() OFN.flags = 0 lReturn = GetOpenFileName(OFN) If lReturn = 0 Then MsgBox "You didn't select any file" strFilename = "" Else strFilename = Trim$(OFN.lpstrFile) ' copy the filename End If SelectFileOpenDialog = strFilename End Function Public Function SelectFileOpenDialog2(strInitDir As String, strTitle As String, strFilter As String) As String Dim fd As FileDialog Dim lReturn As Long Dim strFilename As String Set fd = Application.FileDialog(msoFileDialogFilePicker) fd.AllowMultiSelect = False ' str filter should contain a comma seperated list of filters of the form ' *.<application extention> e.g. *.docx or *.xlsx etc. fd.Filters.Clear fd.Filters.Add "Word Files", "*.doc;*.dot;*.docx;*.dotx;*.dotm" fd.Filters.Add "Text/CSV files", "*.txt;*.csv" fd.Filters.Add "Excel files", "*.xlsx;*.xls;*.xlsm" fd.Filters.Add "All files", "*.*" fd.Filters.Add "Your file type description", strFilter fd.Title = strTitle fd.InitialFileName = strInitDir fd.InitialView = msoFileDialogViewDetails lReturn = fd.Show If lReturn = 0 Then MsgBox "You didn't select any file" strFilename = "" Else strFilename = Trim$(fd.SelectedItems(1)) ' copy the filename - The 1 might need to be a zero End If SelectFileOpenDialog2 = CStr(strFilename) End Function |
|
![]() |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
Error message when opening any template | spiff1116 | Word | 6 | 11-04-2013 04:44 PM |
Template "File In Use" when opening 2 documents based on the same template | wendt | Word | 5 | 12-15-2009 12:37 AM |
Error opening word from a doc. | Davem501 | Word | 0 | 12-01-2009 02:10 AM |
Error when opening .vcf files | thorgal67 | Outlook | 0 | 04-06-2009 04:54 AM |
Outlook XP *.msg opening error msg | slmka | Outlook | 0 | 06-27-2007 09:00 PM |