2011-05-04 5 views
5

필터를 사용하여 '다른 이름으로 저장'대화 상자를 만들고 싶지만 FileDialog 클래스 (Microsoft Office 12.0 Object Library)를 사용하여 만들 수없는 것 같습니다. 실제로 설명서에이 here이 나와 있지만 마지막 단락을 참조하십시오. 이유는 없습니다. VB에서 이것을 달성하는 다른 방법이 있습니까?MS Office SaveAs vb에 필터가있는 FileDialog

Word, Excel 및 Access에이 SaveAs 기능이 내장되어 있기 때문에 FileDialog 클래스에서 허용하지 않는 것이 이상합니다.

FileDialog는 필터를 허용하는 FilePicker (msoFileDialogFilePicker)로 만들 수 있지만, 아직 존재하지 않는 파일을 선택할 수 없으므로 전체 지점을 무효화합니다.

답변

0

@AlexK는 Windows API 호출을 사용하는 유일한 방법입니다. here

0

그 이유는 특정 클래스에 대한 제한 인 것처럼 보입니다.

Dim vResult As Variant 
vResult = Application.GetSaveAsFilename("default.blah", "blah files,*.blah,Text file,*.txt,All files,*.*", 0, "Title") 
If VarType(vResult) = vbBoolean Then 
    MsgBox "cancelled" 
Else 
    MsgBox vResult 
End If 
+1

Application.GetSaveAsFilename은 Excel에서만 사용할 수 있습니다. 좀 더 일반적인 대답을 원했기 때문에 Access와 함께 사용할 수 있습니다. – David

+2

내가 할 수있는 유일한 방법은 GetSaveFileName API입니다. VBA 예제가 많이 있습니다 (또는 호출시 COM을 통해 GetSaveAsFilename을 호출하는 것이 좋지만 조금 더 심해 보입니다) –

관련 문제