Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Программирование на Basic / VBA


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты по данной тематике

Асмик Гаряка
Статус: Советник
Рейтинг: 10943
∙ повысить рейтинг »
Роман Селиверстов
Статус: Советник
Рейтинг: 5087
∙ повысить рейтинг »
Гуревич Александр Львович
Статус: Профессионал
Рейтинг: 4583
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И СОФТ / Программирование / Basic/VBA

Номер выпуска:1081
Дата выхода:11.10.2012, 11:30
Администратор рассылки:Кочетков Василий [Vasiliy83] (Профессионал)
Подписчиков / экспертов:88 / 44
Вопросов / ответов:3 / 5

Консультация # 115170: Уважаемые эксперты Вопрос 1)как из макроса в Excel открыть окно для выбора файла и выбрать его 2) Файл имеет расширение типа .001 а мне надо открыть его при помощи Excel. Спасибо...


Консультация # 42072: Здравствуйте! Имеется следующая задача: в конце строки вставить картинку, причем картинка должна иметь положение="за текстом". Делаю так: Set pic = Selection.InlineShapes.AddPicture("E:\1.jpg", False, True,Selection.Range) pic.Select pic.ConvertToShape Selection.ShapeRange.WrapFormat.Type = 3 Select...
Консультация # 16866: Уважаемые эксперты! Как сделать, чтобы перемещение между TextBox (да и другими элементами) осуществлялось не только клавишей TAB, но и стрелк ами вниз, вверх, вправо, влево, Enter (дайте коды стрелок, код TAB=9, Enter=13). В TextBox возникает проблема со стрелками - фокус должен пе ремещаться, когда курсор находится на грани TextB...

Консультация # 115170:

Уважаемые эксперты Вопрос
1)как из макроса в Excel открыть окно для выбора файла и выбрать его
2) Файл имеет расширение типа .001 а мне надо открыть его при помощи Excel.
Спасибо

Дата отправки: 21.12.2007, 08:57
Вопрос задал: Larsh
Всего ответов: 2
Страница онлайн-консультации »


Консультирует HookEst (Специалист):

Здравствуйте, Larsh!
Используйте FileDialog.Filters:

With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = False
With .Filters
.Clear
.Add "Файл 001", "*.001", 1
.Add "Все Файлы", "*.*", 2
End With
If .Show = -1 Then
\'делайте с файлом что хотите
MsgBox .SelectedItems(1)
End If
End With

Успехов.

Консультировал: HookEst (Специалист)
Дата отправки: 21.12.2007, 09:17
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Черников Игорь Владимирович:

Здравствуйте, Larsh!
Создайте кнопку на любом листе Excel и впишите туда этот код:

Option Explicit
Dim Res1 As Boolean
Dim Dir1 As String, ОдинСимвол As String
Dim Flname As String
Dim Flt1 As String

Private Sub CommandButton1_Click()
Res1 = MyGetFileName(Dir1, Flname, Application.Hwnd)
If Not Res1 Then MsgBox "Файл не выбран, программа завершает работу.", , "Отказ от выбора файла"
End Sub

Затем создайте модуль и впишите туда этот код:
Option Explicit
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
Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
Public Function MyGetFileName(DirStr As String, FileNameStr As String, Optional hwndOwnerArg As Long = 0) As Boolean
Dim pOpenfilename As OPENFILENAME
Dim n As Integer, i As Integer, X As Long, St1 As String, St2 As String, St3 As String
pOpenfilename.lStructSize = Len(pOpenfilename)
pOpenfilename.hwndOwner = hwndOwnerArg
pOpenfilename.lpstrTitle = "Выберите нужный файл"
St1 = "Все файлы" & vbNullChar & "*.*"
pOpenfilename.lpstrInitialDir = DirStr
pOpenfilename.lpstrFilter = St1
pOpenfilename.lpstrFile = LPBuff(512)
pOpenfilename.nMaxFile = 511
pOpenfilename.lpstrFileTitle = LPBuff(512)
pOpenfilename.nMaxFileTitle = 511
pOpenfilename.flags = 16384 Or 2097152 Or 1048576 Or 524288
pOpenfilename.flags = pOpenfilename.flags Or 512
X = GetOpenFileName(pOpenfilename)
If X = 1 Then
MyGetFileName = True
St1 = LP2VB2(pOpenfilename.lpstrFile)
DirStr = Left(St1, pOpenfilename.nFileOffset - 1)
n = -1
St2 = St1
Do
St3 = MyGetLpStr(St2)
n = n + 1
Loop Until St2 = ""
If n >= 1 Then
MsgBox "Выбрано несколько файлов! Программа завершает работу"
End
Else
FileNameStr = Right$(St1, Len(St1) - pOpenfilename.nFileOffset)
End If
Else
MyGetFileName = False
DirStr = ""
FileNameStr = ""
End If
End Function
Private Function LP2VB2(St1) As String
LP2VB2 = Left$(St1, InStr(1, St1, vbNullChar & vbNullChar) - 1) \'здесь формируется полный путь и имя файла
End Function

Private Function LPBuff(n As Integer) As String
LPBuff = String(n, vbNullChar)
End Function
Public Function MyGetDirStr(Str1 As String) As String
Dim i As Integer, i1 As Integer, k As Integer
Dim St1 As String
If Len(Str1) > 0 Then
k = 1
Do
i = InStr(k, Str1, "\")
If i <> 0 Then i1 = i: k = i + 1
Loop While i <> 0
If i1 <> 0 Then
St1 = Left$(Str1, i1)
Else
i = InStr(1, Str1, ":")
If i = 0 Then
St1 = ""
Else
St1 = Left$(Str1, i1) & "\"
End If
End If
Else
St1 = ""
End If
MyGetDirStr = St1
End Function
Private Function MyGetLpStr(St1 As String) As String
Dim i As Variant
i = InStr(1, St1, vbNullChar)
If IsNull(i) Then
MyGetLpStr = ""
St1 = ""
Exit Function
ElseIf i = 0 Then
MyGetLpStr = St1
St1 = ""
Exit Function
Else
MyGetLpStr = Left$(St1, i - 1)
St1 = Right$(St1, Len(St1) - i)
Exit Function
End If
End Function
Public Function NormalizeDir(Str1 As String) As String
If Len(Str1) = 0 Then
NormalizeDir = ""
Exit Function
Else
If Right$(Str1, 1) <> "\" Then
NormalizeDir = Str1 & "\"
Exit Function
Else
NormalizeDir = Str1
Exit Function
End If
End If
End Function

Приятной работы!

Консультировал: Черников Игорь Владимирович
Дата отправки: 21.12.2007, 19:52
Рейтинг ответа:

НЕ одобряю 0 одобряю!

Консультация # 42072:

Здравствуйте! Имеется следующая задача: в конце строки вставить картинку, причем картинка должна иметь положение="за текстом". Делаю так:

Set pic = Selection.InlineShapes.AddPicture("E:\1.jpg", False, True,Selection.Range)
pic.Select
pic.ConvertToShape
Selection.ShapeRange.WrapFormat.Type = 3
Selection.ShapeRange.ZOrder 4

Но при выполнениии pic.ConvertToShape картинка перемещается в произвольное место. Что можно сделать? Может быть как-то можно узнать координаты курсора?

Дата отправки: 04.05.2006, 18:04
Вопрос задал: Alexius (Посетитель)
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Genyaa:

Здравствуйте, Alexius!

Может просто не нужно "терять объект из виду"? (см. Приложение)

Приложение:

Консультировал: Genyaa
Дата отправки: 04.05.2006, 19:00
Рейтинг ответа:

НЕ одобряю 0 одобряю!

Консультация # 16866:

Уважаемые эксперты! Как сделать, чтобы перемещение между TextBox (да и
другими элементами) осуществлялось не только клавишей TAB, но и стрелк
ами вниз, вверх, вправо, влево, Enter (дайте коды стрелок, код TAB=9,
Enter=13). В TextBox возникает проблема со стрелками - фокус должен пе
ремещаться, когда курсор находится на грани TextBox, а не где-то внутри
поля TextBox (тогда курсор перемещается просто для редактирования текс
та).

Дата отправки: 10.02.2005, 19:12
Вопрос задал: Александр А.А.
Всего ответов: 2
Страница онлайн-консультации »


Консультирует Licvidator:

Здравствуйте, Александр А.А.!
Очень просто, Вам не нужно запоминать коды клавиш, ведь есть же встроенные константы!
См пример:

Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case vbKeyUp, vbKeyDown, vbKeyRight, vbKeyLeft
If Text1.SelStart = Len(Text1) Then Text2.SetFocus
Case vbKeyTab, vbKeyReturn
Text2.SetFocus
End Select
End Sub

К тому же, что Вам мешает написать MsgBox KeyAscii в соответсвующую процедуру и получить код нажатой клавиши? Кстати, функциональные клавиши (F1, например) этой ф-ией не обрабатываются.
PS Прочитайте личное сообщение, когда войдете на портал русфака.

Консультировал: Licvidator
Дата отправки: 10.02.2005, 23:29
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Miklucho (Практикант):

Здравствуйте, Александр А.А.!
Вот говорят же, повторенье - мать ученья. Функция chr(целое число >255>) вовращает символ по его коду, а наоборот не помню как функция называется, ну не пользуюсь я ею. То ли asc(), то ли еще как, короче поищи в браузере объектов сначало chr(), они там рядом должны быть. Если хошь могу выслать прогу собственного изготовления для определения кодов клавиш, только адрес вышли на mkop_@rambler.ru
На грани ТекстБокса - это то есть после последнего символа? Используй тогда событие Change, просчитывай в нем длину введенного текста в Текстбоксе и сравнивай эту длину с положением курсора в окошке (свойства текстового окна начинающиеся на Sel...тебе помогут (бейсика под рукой нет,а на память не помню)), если они равны значит курсор находится в конце строки.

Консультировал: Miklucho (Практикант)
Дата отправки: 15.02.2005, 09:19
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка  |  восстановить логин/пароль

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!



В избранное