2012-12-10 104 views
0

用于在Windows XP上工作的打开/保存对话框不再适用于我的Windows 7 64位。我听说'MSComDlg.CommonDialog'与64位不兼容。这是我的老代码:与Windows 64位兼容的打开/保存文件对话框

' Sub to show open/save dialog 
SUB OpenSave (varOpenSaveInputBox, varOpenSaveType, varOpenSaveFilter) 
    ' Create object 
    SET objComDlg32 = CreateObject("MSComDlg.CommonDialog") 
    ' Set memory buffer 
    objComDlg32.MaxFileSize = 260 
    ' Set filter 
    objComDlg32.Filter = varOpenSaveFilter 
    ' Show dialog 
    IF varOpenSaveType = 0 Then 
     objComDlg32.ShowOpen 
    ELSE 
     objComDlg32.ShowSave 
    End IF  
    ' Get filename from dialog 
    strOpenSave = objComDlg32.FileName 
    ' Check IF dialog is cancelled 
    IF strOpenSave <> vbNullString Then 
     ' Set to variable 
     objOpenSave.SetContent strOpenSave, TRUE 
    End If 
END SUB 

我真的很感激,如果你更具体的答案,而不是“使用这个!”。 DLL和OCX并不是我的强项。谢谢。

+0

这是什么意思“不再起作用”?我不是Win7 64位的问题。你有哪些办公室版本?你必须有开发者版本。 – dee

+3

什么语言? vba,vbscript和activex都是不同的技术 – SeanC

+0

@DanielDusek我没有在办公室使用它,我在QlikView中使用它。我需要一个在win7 64位下工作的开放文件对话框。如果你知道'MSComDlg.CommonDialog'的替代品,我将不胜感激。 – Disasterkid

回答

0

这是VBA,但它可能足以指向正确的方向。 3声明你想打开的对话类型。你可以在这里找到更多的信息:http://msdn.microsoft.com/en-us/library/office/ff865284.aspx

Sub FileSelect (Multi as Boolean) 
'Set Dlg = Application.FileDialog(msoFileDialogFilePicker) 
Set Dlg = Access.Application.FieDlialog(3) 
With Dlg 
    .Title = "Select the file you want to open" 
    .AllowMultiSelect = Multi 
    If .show = -1 Then 
     txtFilePath = .InitialFileName 
    Else 
     Exit Function 
    End If 
End With 

FileSelect = Dlg.selecteditems(1) 
End function