Встроенные диалоги excel

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
AHTOXA
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 147
Зарегистрирован: 17.04.2003 (Чт) 13:38
Откуда: Россия, г. Петрозаводск

Встроенные диалоги excel

Сообщение AHTOXA » 17.04.2003 (Чт) 13:44

Привет всем.
В excel написал такой макрос на VB:

Sub ImportByClick2()
Application.Dialogs.Item(xlDialogOpenText).Show _
arg2 = xlWindows, arg3 = 1, arg5 = xlDoubleQuote, arg6 = False, _
arg7 = False, arg8 = True, arg9 = False, arg10 = False, arg11 = False
End Sub

Должен открыться диалог, вместо этого мне выдается ошибка:

Application-defined or user-defined error, че с этим делать?
Bandit

corgi
ToyMan
ToyMan
 
Сообщения: 1367
Зарегистрирован: 01.10.2002 (Вт) 9:59
Откуда: Россия, Москва

Сообщение corgi » 17.04.2003 (Чт) 13:57

ты как аргументы задаешь :?: :?: :shock: :shock:
напиши вроде того ...
Dim p As object
Set p = Application.Dialogs(xlDialogOpenText)
ну и потом через точку параметры задаешь

ps ты еще кстати форумом ошибся ..... тебе в VBA надо :wink:

AHTOXA
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 147
Зарегистрирован: 17.04.2003 (Чт) 13:38
Откуда: Россия, г. Петрозаводск

Сообщение AHTOXA » 17.04.2003 (Чт) 14:06

То, что форумом ошибся, моя вина :(. А как параметры задаются для встроенных диалогов, я посмотрел по адресу http://www.firststeps.ru/dotnet/, там "Шаг 33 - Встроенные диалоговые окна".
Bandit

AHTOXA
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 147
Зарегистрирован: 17.04.2003 (Чт) 13:38
Откуда: Россия, г. Петрозаводск

Сообщение AHTOXA » 17.04.2003 (Чт) 14:11

Задал так:
Dim p As Object
Set p = Application.Dialogs(xlDialogOpenText)

Выдает ту же самую ошибку, но я же метода Show не вызывал.
Bandit

corgi
ToyMan
ToyMan
 
Сообщения: 1367
Зарегистрирован: 01.10.2002 (Вт) 9:59
Откуда: Россия, Москва

Сообщение corgi » 17.04.2003 (Чт) 14:20

1. не знал однако :oops:
2. этот диалог относится к классу диалогов у которых нет формы
Microsoft Excel provides a list of built-in constants that you can use in a Microsoft Visual Basic for Applications macro to display a built-in Excel dialog box. However, some of the built-in constants will not display an interactive dialog box.
xlDialogAppMove
xlDialogAppSize
xlDialogErrorbarX
xlDialogErrorbarY
xlDialogFormatMove
xlDialogMove
xlDialogOpenText
xlDialogOverlayChartType
xlDialogPivotFieldUngroup
xlDialogSaveCopyAs
xlDialogSetControlValue
xlDialogSize
xlDialogSplit
xlDialogVbaProcedureDefinition
xlDialogWindowMove
xlDialogWindowSize
xlDialogWorkbookTabSplit

так что используй простой xlDialogOpen

AHTOXA
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 147
Зарегистрирован: 17.04.2003 (Чт) 13:38
Откуда: Россия, г. Петрозаводск

Сообщение AHTOXA » 17.04.2003 (Чт) 14:27

Со всеми бывает :). Дело в том что мне надо импортировать данные из текстового файла. Если использовать xlDialogOpen, то будет задано куча вопросов по импорту, а мне надо сделать так чтобы user выбрал файл, ткнул ok и данные бы засосались. Ничего не можете посоветовать? :(
Bandit

corgi
ToyMan
ToyMan
 
Сообщения: 1367
Зарегистрирован: 01.10.2002 (Вт) 9:59
Откуда: Россия, Москва

Сообщение corgi » 17.04.2003 (Чт) 14:30

ну для начала такую стандартную вещь: нажимаешь записать макрос потом экспортируешь файл затем останавливаешь запись и смотришь что там получилось ну а дале по ситуации

AHTOXA
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 147
Зарегистрирован: 17.04.2003 (Чт) 13:38
Откуда: Россия, г. Петрозаводск

Сообщение AHTOXA » 17.04.2003 (Чт) 14:53

Так пробовал. В макросе после записи, только импорт файла оседает. А диалога нет. Т.е. если я данные действия запишу в макрос, то при следующем вызове этого макроса, будет импортирован тот файл, который я указал в диалоге импорта, когда записывал макрос.

Пока сделал так:

Sub ImportFileByClick()
On Error GoTo Error1
file_name = InputBox("Input valid filename", "Import file")
If file_name <> "" Then
Workbooks.OpenText Filename:=file_name, Origin:= _
xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=True, _
Comma:=False, Space:=False, Other:=False
End If
GoTo Ends
Error1:
MsgBox (Err.Description)
file_name = InputBox("Input valid filename", "Import file")
If file_name <> "" Then
Resume 0
End If
Ends:
End Sub

Но так диалог открытия файла не удобный. Есть еще какие-нибудь идеи?
Bandit

corgi
ToyMan
ToyMan
 
Сообщения: 1367
Зарегистрирован: 01.10.2002 (Вт) 9:59
Откуда: Россия, Москва

Сообщение corgi » 17.04.2003 (Чт) 15:14

в fileToOpen получаем имя файла который хочем открыть
Код: Выделить всё
Dim fileToOpen As String
fileToOpen = Application.GetOpenFilename("txt Files (*.txt), *.txt")


ну и дале подставляем в записаный нами ранее макрос

AHTOXA
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 147
Зарегистрирован: 17.04.2003 (Чт) 13:38
Откуда: Россия, г. Петрозаводск

Сообщение AHTOXA » 17.04.2003 (Чт) 15:20

Спасибо дружище, то что нужно. Будешь в Петрозаводске, с меня Пыво. :lol:
Bandit

corgi
ToyMan
ToyMan
 
Сообщения: 1367
Зарегистрирован: 01.10.2002 (Вт) 9:59
Откуда: Россия, Москва

Сообщение corgi » 17.04.2003 (Чт) 15:21

"нет уж лучше вы к нам" (c) :lol: :lol: :lol:


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 85

    TopList