Система Техэксперт
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как открыть диалог Open или Save на VBA под AutoCAD

Как открыть диалог Open или Save на VBA под AutoCAD

Ответ
Поиск в этой теме
Непрочитано 26.12.2009, 11:31 #1
Как открыть диалог Open или Save на VBA под AutoCAD
Linetzev
 
Регистрация: 05.08.2009
Сообщений: 7

Я уже много мелочей написал на VBA для себя под AutoCAD. Это в основном простые программки. Только недавно начал программировать формы и в них желательно бы иметь кнопки OPEN и SAVE для работы с файлами. Подскажите как мне реализовать на форме эти кнопки и соответственно работать с текстовыми файлами?
Просмотров: 6286
 
Непрочитано 26.12.2009, 14:41
1 | #2
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 813


Цитата:
Сообщение от Linetzev Посмотреть сообщение
Я уже много мелочей написал на VBA для себя под AutoCAD. Это в основном простые программки. Только недавно начал программировать формы и в них желательно бы иметь кнопки OPEN и SAVE для работы с файлами. Подскажите как мне реализовать на форме эти кнопки и соответственно работать с текстовыми файлами?
Можно так (проверено только для Windows XP):

Код:
[Выделить все]
Option Explicit
'' Fatty T.O.H () 2006 * all rights removed
Function BrowseForFile(pstrPath, pstrFilter)
Dim objDialog As Object
Dim intResult As Integer
Set objDialog = CreateObject("UserAccounts.CommonDialog")
objDialog.Filter = pstrFilter
objDialog.InitialDir = pstrPath
objDialog.flags = &H4 + &H8 + &H4000
intResult = objDialog.ShowOpen()
BrowseForFile = objDialog.FileName
End Function



Sub test()
Dim p, f, s
p = ThisDrawing.GetVariable("DWGPREFIX")
f = "AutoCAD Files| *.dwg"
s = BrowseForFile(p, f)
MsgBox s
Application.Documents.Open s, False
MsgBox "end open file " & s
'' --> здесь работаешь с файлом
Application.ActiveDocument.SaveAs ("C:\SaveTest.dwg") <--для примера сохраняем здесь
MsgBox "saved as C:\SaveTest.dwg"
Application.ActiveDocument.Close
End Sub
~'J'~
Олег (jr.) вне форума  
 
Автор темы   Непрочитано 27.12.2009, 06:33
#3
Linetzev


 
Регистрация: 05.08.2009
Сообщений: 7


Спасибо. Попробую Ваш алгоритм.
Linetzev вне форума  
 
Непрочитано 29.03.2011, 01:43
#4
rass

Конструктор
 
Регистрация: 22.03.2007
Киев
Сообщений: 86
<phrase 1=


Спасибо! алгоритм работает, но к сожалению только на Win XP, а как его оживить на Win 7? почемуто на "семерке" CommonDialog не работает (((
rass вне форума  
 
Непрочитано 29.03.2011, 05:13
1 | #5
trir


 
Регистрация: 18.12.2010
Сообщений: 4,116


Код:
[Выделить все]
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

Public Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" _
(pOpenfilename As OpenFileName) As Long

Public Function OpenFile(Filter As String, Extention As String, Optional Directory As String) As String
Dim strTemp As String
Dim OpenFileName As OpenFileName
With OpenFileName
.lStructSize = Len(OpenFileName)
.hwndOwner = ThisDrawing.HWND
.lpstrFilter = Filter & " (" & Extention & ")" & Chr$(0) & Extention & Chr$(0)
.lpstrFile = Space$(254)
.nMaxFile = 255
.lpstrFileTitle = Space$(254)
.nMaxFileTitle = 255
.lpstrInitialDir = Directory
.lpstrTitle = "Выбор Файла"
.flags = 0
If GetOpenFileName(OpenFileName) Then
strTemp = (Trim(.lpstrFile))
OpenFile = Mid(strTemp, 1, Len(strTemp) - 1)
End If
End With
End Function
Вызов как то так
Код:
[Выделить все]
TextBox1.Text = OpenFile("Чертёж", "*.dwg", "c:\")

Последний раз редактировалось Кулик Алексей aka kpblc, 04.05.2011 в 01:26.
trir на форуме  
 
Непрочитано 04.05.2011, 00:07
#6
rass

Конструктор
 
Регистрация: 22.03.2007
Киев
Сообщений: 86
<phrase 1=


trir спасибо, и ваш код наконец-то заработал у меня на Win7!
rass вне форума  
 
Непрочитано 12.05.2011, 16:56
#7
trir


 
Регистрация: 18.12.2010
Сообщений: 4,116


На x64
ThisDrawing.HWND
надо заменить на
ThisDrawing.HWND32
trir на форуме  
 
Непрочитано 02.09.2020, 14:23
#8
Mark_Shneider


 
Регистрация: 02.07.2020
Сообщений: 12


Цитата:
Сообщение от trir Посмотреть сообщение
На x64
ThisDrawing.HWND
надо заменить на
ThisDrawing.HWND32
На вин 10 не работает, в чем причина?

----- добавлено через ~9 мин. -----
На 10 винде выдает на участке

Код:
[Выделить все]
Public Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" _
(pOpenfilename As OpenFileName) As Long
ошибку "The code in this project must be updated for use on 64-bit systems. Please review and update Declare statements and then mark them with the PtrSafe attribute."
Mark_Shneider вне форума  
 
Непрочитано 02.09.2020, 14:38
#9
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,336


https://forums.autodesk.com/t5/inven...le.language=ru

Могли бы и сами поискать строчку ошибки и имя библиотеки в гугле.
__________________
_бложиг
Boxa вне форума  
 
Непрочитано 02.09.2020, 14:55
#10
Mark_Shneider


 
Регистрация: 02.07.2020
Сообщений: 12


Цитата:
Сообщение от Boxa Посмотреть сообщение
https://forums.autodesk.com/t5/inven...le.language=ru

Могли бы и сами поискать строчку ошибки и имя библиотеки в гугле.
Спасибо, но теперь на строчке

Код:
[Выделить все]
.hwndOwner = ThisDrawing.HWND32
выдает method or data member not found.
Mark_Shneider вне форума  
 
Непрочитано 02.09.2020, 15:05
#11
trir


 
Регистрация: 18.12.2010
Сообщений: 4,116


да, была целая статья про это
HWND32 больше нет
trir на форуме  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как открыть диалог Open или Save на VBA под AutoCAD

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сейсмозащита и сейсмоизоляция существующих, построенных зд. IANationalInformAgentstvo Прочее. Архитектура и строительство 216 20.01.2015 16:51
запуск программы из AutoCADа kminas Программирование 19 15.06.2012 13:42
Мониторы LCD CRT Разное 94 17.06.2008 10:51
Можно ли открыть 3D модель ACAD2006 в 2007(8) без потерь? Fil AutoCAD 1 13.09.2007 11:40
ЮМОР 2006 =) Perezz!! Разное 1122 04.01.2007 00:46