PDA

View Full Version : سوال: باز کرد ن فایل از طریق پنجره open



abas1388
شنبه 26 شهریور 1390, 15:07 عصر
با سلام
در فایل نمونه ضمیمه چه کدی باید اضافه شود که با انتخاب یک فایل از لیست پنجره open و کلیک بر روی open آن فایل باز شود؟
با تشکر

محسن واژدی
شنبه 26 شهریور 1390, 15:57 عصر
سلام
مشکل در تابع ShellExecute بود که مسیر فایل گرفته شده در ان قرار داده نشده بود، کد های زیر را جایگزین کدهای فرم کنید:

Private Const SW_HIDE = 0
Private Const SW_SHOW = 5
Private Const SW_MINIMIZE = 3
Private Const SW_MAXIMIZE = 6
Private Const SW_NORMAL = 1
Private Const SW_SHOWDEFAULT = 10
Private Declare Function ShellExecuteA Lib "shell32.dll" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long


Private Sub Command1_Click()
On Error GoTo cError

Dim i As Integer
Dim myFiles() As String
Dim myPath As String

With CommonDialog1
.MaxFileSize = 32000 'this will max out the buffer for the filenames array for large selections. *NEW*
.CancelError = True 'if cancel is pressed, the code jumps to cError because of the On Error statement above
'.Filter = "All Files *.*/*.*" '*NOTE!!* The / should be a vertical pipe symbol here! It displays incorrectly here.
.Filter = "All Files (*.html)"

.Flags = cdlOFNAllowMultiselect Or cdlOFNExplorer Or cdlOFNHideReadOnly
'this is where we tell it to use multiselect
.ShowOpen

myFiles = Split(.FileName, vbNullChar) 'the Filename returned is delimeted by a null character because we selected the cdlOFNLongNames flag

Select Case UBound(myFiles)
Case 0 'if only one was selected we are done
ShellExecuteA hwnd, "open", myFiles(0), vbNullString, "myPath", SW_SHOW
Case Is > 0 'if more than one, we need to loop through it and append the root directory
For i = 1 To UBound(myFiles)
myPath = myFiles(0) & IIf(Right(myFiles(0), 1) "\", "\", "") & myFiles(i)
' List1.AddItem myPath
ShellExecuteA hwnd, "open", myPath, vbNullString, "myPath", SW_SHOW
Next i
End Select

End With
Exit Sub

cError:
Beep
' MsgBox Err.Description '*NEW*
End Sub

Private Sub Command2_Click()
End
End Sub

موفق باشید

abas1388
شنبه 26 شهریور 1390, 20:30 عصر
سلامو عرض تشکر بخاطر جواب
فقط یک سوال
چرا فایلهائی که دارای اسامی فارسی بوده و نام فارسی آن از دو قسمت تشکیل شده باشد ( دارای فاصله باشد) مثل صورتحساب شهریور.xls را باز نمی کند ؟
با تشکر

محسن واژدی
یک شنبه 27 شهریور 1390, 17:02 عصر
متاسفانه این مشکل در یونیکدهایی مانند فارسی وجود دارد