Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

можно ли код VB перенести в VBA?

248
20 сентября 2007 года
Dmitry2064
590 / / 06.12.2006
Вот есть такой код (большое спасибо Tever'y)^
Код:
Private Sub Command1_Click()
Dim nameOLD, nameNew As String
File1.Path = Text1.Text
File1.Pattern = "*.bmp"
For i = 0 To File1.ListCount - 1
nameOLD = Left(File1.List(i), InStr(1, File1.List(i), ".bmp") - 1)
nameNew = ""
For ii = 1 To Len(nameOLD) 'перебираем буквы названия
myletter = Mid(nameOLD, ii, 1)
If Asc(myletter) < 222 And Asc(myletter) > 209 Then
myletter = 1
End If
nameNew = nameNew & myletter
Next
MsgBox nameNew
'Name File1.Path & "\" & nameOLD & ".bmp" As File1.Path & "\" & nameNew1 & ".bmp"
Next
End Sub


Можно ли его как-то модифицировать, что бы из-под Ворда он бы тоже работал? Сейчас (в Ворде) он останавливается на строке File1.Path = Text1.Text со словами [COLOR="Red"]Object Required [/COLOR](что ессно).
Ну и совсем было бы замечательно не привязывать его к конкретной директории, начинать действовать в текущей.
251
20 сентября 2007 года
SkyMаn
1.7K / / 31.07.2007
А выдает File1.Path = Text1.Text = [COLOR=red]Object Required [/COLOR][COLOR=black]изз-за того, что объекта Text1.Text не существует. Создайте форму и работайте на здоровье :)[/COLOR]
248
20 сентября 2007 года
Dmitry2064
590 / / 06.12.2006
Цитата: SkyM@n
А выдает File1.Path = Text1.Text = [COLOR=red]Object Required [/COLOR][COLOR=black]изз-за того, что объекта Text1.Text не существует. Создайте форму и работайте на здоровье :)[/COLOR]


А в ВБА под Вордом вроде нельзя создавать формы? Или надо создать объект File?

248
20 сентября 2007 года
Dmitry2064
590 / / 06.12.2006
Используя примеры из других тем смог накомбинировать таким образом без создания объекта File:
Код:
Sub RenameMy()
Dim MyPath As String, nameOLD As Variant
iPath = ActiveDocument.Path
iPath = ActiveDocument.Path & "\"[COLOR="DarkGreen"] 'добавили слешку для корректной работы Dir'a[/COLOR]
iFileName = Dir(iPath & "*.bmp")
     Do While iFileName <> ""
     nameNew = "" [COLOR="DarkGreen"]'заготовили чистую переменную[/COLOR]
     For i = 1 To Len(iFileName) [COLOR="DarkGreen"]'перебираем буковки[/COLOR]
    myletter = Mid(iFileName, i, 1) [COLOR="DarkGreen"]'выудили i-ю буковку[/COLOR]
If Asc(myletter) > 209 And Asc(myletter) < 222 Then
myletter = 1 [COLOR="DarkGreen"]'избавляемся от проблемных 209-222 символов[/COLOR]
End If
nameNew = nameNew & myletter [COLOR="DarkGreen"]'не спеша добавляем в пустую переменку по буковке _
одну за другой :) [/COLOR]
Next
MsgBox nameNew [COLOR="DarkGreen"]'до этой строки все прекрасно[/COLOR]
Name File1.Path & "\" & iFileName & ".bmp" As File1.Path & "\" & nameNew & _
".bmp" 'тут остановка, т.к. опять же [COLOR="Red"]Object Required[/COLOR]
iFileName = Dir
Loop
End Sub

Вот как бы так извернуться, что бы объект все же НЕ создавать (в отпущенное для жизни время не справлюсь) :o
275
21 сентября 2007 года
pashulka
985 / / 19.09.2004
Код:
Private Sub RenameBMPFile()
    iPath$ = ActiveDocument.Path & "\"
    iFileName$ = Dir(iPath$ & "*.bmp")
    Do While iFileName$ <> ""
       iTempName$ = iFileName$
       For iCount% = 1 To Len(iFileName$) - 4
           iSymbol$ = Mid(iFileName$, iCount%, 1)
           If iSymbol$ Like "[Т-Э]" Then _
           Mid(iTempName$, iCount%, 1) = "1"
       Next
       If iTempName$ <> iFileName$ Then _
       Name iPath$ & iFileName As iPath$ & iTempName$
       iFileName = Dir
    Loop
End Sub
263
21 сентября 2007 года
koltaviy
816 / / 16.12.2004
Цитата: pashulka
Код:
Private Sub RenameBMPFile()
    iPath$ = ActiveDocument.Path & "\"
    iFileName$ = Dir(iPath$ & "*.bmp")
    Do While iFileName$ <> ""
       iTempName$ = iFileName$
       For iCount% = 1 To Len(iFileName$)
           iSymbol$ = Mid(iFileName$, iCount%, 1)
           If iSymbol$ Like "[Т-Э]" Then _
           Mid(iTempName$, iCount%, 1) = "1"
       Next
       If iTempName$ <> iFileName$ Then _
       Name iPath$ & iFileName As iPath$ & iTempName$
       iFileName = Dir
    Loop
End Sub


pashulka, символ после названия переменной, встретившейся в блоке первый раз - это вроде объявления переменной определенного типа?
Где можно почитать?? Интересная фича!

275
21 сентября 2007 года
pashulka
985 / / 19.09.2004
koltaviy, VB(A) действительно поддерживает символьное описание типа Dim iPath$, iCount% и здесь даже можно увидеть весь список подобных символов, только продолжения ждать, увы, не приходится, ибо Microsoft больше не вводит новых символов.
15K
21 сентября 2007 года
gruz0
71 / / 23.11.2006
А можно через FSO реализовать :)
Dim FSO as Object
Set FSO = CreateObjects("Scripting.FileSystemObject")
И далее по докам :)

Или вообще на API написать...
248
21 сентября 2007 года
Dmitry2064
590 / / 06.12.2006
Цитата: gruz0
А можно через FSO реализовать :)
Dim FSO as Object
Set FSO = CreateObjects("Scripting.FileSystemObject")
И далее по докам :)

Или вообще на API написать...



Спасибо Пашульке. Хотя для меня это воспринимается как фокус. Вроде примерно тоже, но работает! :)

А на CreateObjects ругается, что функция или объект не определены.
Но и как есть тоже хорошо.
API я и не знаю (мне бы с ВБА разобраться :o ) да и запускать все приходится вроде только из-под Ворда. Тем более, если можно максимум задач реализовывать из-под одного приложения, то и не имеет смысла создавать дополнительные типа "модули". Еще раз большое спасибо.

275
21 сентября 2007 года
pashulka
985 / / 19.09.2004
[quote=Dmitry2064]А на CreateObjects ругается, что функция или объект не определены[/quote]

Так всегда происходит, когда люди используют постороннии об'екты в которых, на самом деле, нет никакой необходимости. Впрочем, если для перебора файлов нельзя использовать функцию VB Dir() или об'ект FileSearch, который можно использовать в т.ч. и в Word97,2000,2002,2003 и очень хочется помучить FSO, то либо CreateObject("Scripting.FileSystemObject"), либо подключить соответствующую библиотеку, т.е. ALT+F11-Tools-References-Microsoft Scripting-Runtime-OK, и Dim FSO As New Scripting.FileSystemObject
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог