All Forums
 Категория Visio
 Форум Вопросы и ответы
 File Dialog
Author Previous Topic Topic Next Topic  

Robinkzn

84 Posts

Posted - 04/24/2012 :  05:10:05
Тема избитая, но всеже. Нужно в визио получить диалог выбора файла. Визио 2010, пробовал кидать в форму "Common dialog", пишет программа, что интерфейс не поддерживается.

Surrogate

Russia
122 Posts

Posted - 04/24/2012 :  08:56:15  Visit Surrogate's Homepage
На форуме http://www.cyberforum.ru/vba/thread325133.html встречал такое решение

Sub P1()
'Чтобы было проще код писать (чтобы выскакивали подсказки после того
'как точку ставите) - подключите библиотеку Word:
'Tools - References... - Microsoft Word Object Library.
'Обращаться к программе Word будем через переменную Ворд.
Dim wd As New Word.Application
wd.Visible = True
'Собственно работа с диалоговым окном
With wd.FileDialog(msoFileDialogFilePicker)
    .Show
    Debug.Print .SelectedItems(1)
End With
'Закрываем программу Word.
wd.Quit
'Не знаю, зачем, ну и это действие сделаем.
Set wd = Nothing
'Здесь дальше код.
End Sub


вроде работает…

Go to Top of Page

Robinkzn

84 Posts

Posted - 04/24/2012 :  09:42:10
Это да. Не хочу использовать другое приложение.
Go to Top of Page

Surrogate

Russia
122 Posts

Posted - 04/24/2012 :  11:59:45  Visit Surrogate's Homepage
дык на том форуме пишут, что нет в визио…
quote:
Busine2009




Go to Top of Page

Surrogate

Russia
122 Posts

Posted - 04/24/2012 :  12:48:43  Visit Surrogate's Homepage
вот что нашел на форуме у VisioGuy
http://visguy.com/vgforum/index.php?topic=738.0

Public Sub openDoc()
    Dim visApp As Visio.Application
    Set visApp = Application
    Dim visDoc As Visio.Document
    visApp.Application.DoCmd (VisUICmds.visCmdFileOpen)
    Set docObj = visApp.ActiveDocument
End Sub


у меня win7, visio2010

Go to Top of Page

Robinkzn

84 Posts

Posted - 04/25/2012 :  10:49:05
Файл открывать нужно текстовый :(.
Go to Top of Page

Surrogate

Russia
122 Posts

Posted - 04/26/2012 :  06:53:45  Visit Surrogate's Homepage
а текстовый файл в какой папке должен лежать ?

1. в произвольной
2. в папке где лежит данный документ визио

Go to Top of Page

Robinkzn

84 Posts

Posted - 04/27/2012 :  13:39:34
Произвольной.
Go to Top of Page

9rey

Russia
30 Posts

Posted - 04/28/2012 :  10:27:21
в VB есть все команды для работы с файловой системой. реализуй свой диалог через написанную тобой форму. придется поработать, но как вариант...
Go to Top of Page

Surrogate

Russia
122 Posts

Posted - 04/28/2012 :  12:45:51  Visit Surrogate's Homepage
на этом форуме было по теме с использованием API
topic.asp@TOPIC_ID=132.html

Private Declare Function GetOpenFileName _
 Lib "COMDLG32.DLL" Alias "GetOpenFileNameA" _
 (pOpenfilename As OPENFILENAME) As Long
Private Declare Function GetSaveFileName _
 Lib "COMDLG32.DLL" Alias "GetSaveFileNameA" _
 (pOpenfilename As OPENFILENAME) As Long

' Объявление структур

Private 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 GetFileFromAPI ()
 Dim OFN As OPENFILENAME
 With OFN
 .lStructSize = Len(OFN) ' Size of structure. 
 .nMaxFile = 260 ' Size of buffer. 
 ' Create buffer.
 .lpstrFile = String(.nMaxFile - 1, 0) 
 Ret = GetOpenFileName(OFN) ' Call function. 
 If Ret <> 0 Then ' Non-zero is success. 
 ' Find first null char. 
 n = InStr(.lpstrFile, VbNullChar) 
 ' Return what's before it. 
 MsgBox Left(.lpstrFile, n - 1) 
 End If
 End With
End Sub

Осталось только фильтр для txt файлов прикрутить


Edited by - Surrogate on 04/28/2012 12:48:32
Go to Top of Page

Robinkzn

84 Posts

Posted - 05/02/2012 :  06:36:48
Спасибо. Буду пробовать функции API.
Go to Top of Page
  Previous Topic Topic Next Topic  
Данный сайт является архивом форума visio.artberg.ru, который был закрыт в связи с переходом на новую платформу visio.getbb.ru
Все материалы доступны только для чтения! Если у вас появились вопросы, или вы хотите что-то обсудить, связанное с Visio, обращайтесь на новый форум!
Архив был создан благодаря совместным усилиям Генадия Туманова @Tumanov (visio.artberg.ru), Александра ака @Surrogate (visio.getbb.ru), и Николая Белых @nbelyh (unmanagedvisio.com)