Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Задачи на Visual Basic (VB).

Автор: okkamasknife
Дата сообщения: 04.01.2011 13:08
помогите разобраться в чём проблема.
есть скрипт test.vbs

Код: args = WScript.Arguments.Count

If args < 1 then
programma = "FSViewer.exe"
else
ImgPath = WScript.Arguments.Item(0)

Set FSO = CreateObject("Scripting.FileSystemObject")
Path = FSO.GetAbsolutePathName("")

programma = Path+"\FSViewer.exe" +" """ + "ToolBar-Background.jpg" + """"
end If
msgbox programma
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run programma,1,true
Автор: Legio
Дата сообщения: 04.01.2011 17:20
okkamasknife
Да пребудет с тобой гугл-фу.
Автор: okkamasknife
Дата сообщения: 04.01.2011 21:20
Legio спасибо!
Автор: Zhon9
Дата сообщения: 22.01.2011 16:37
Есть задача на Visual Basic, помогите пожалуйста сделать блок-схему этой задачи

Private Sub List1_Click()
Dim Y As Double
Dim A As Integer
A = (List1.ListIndex + 1)
'Y=1E3*SIN(2*A*A)^2
'Y=1000*SIN(2*A*A)^2
Y = 1000 * Sin(2 * A ^ 2) ^ 2

Label1.Caption = Str(A) + ") " + Str(Y)
End Sub
Автор: taril115
Дата сообщения: 16.02.2011 19:52
ЛЮДИИИ!!! Подскажите ....
есть 2 модуля
в одном сбор данных а в другом расчёт этих самых данных
вот в модуле расчёта данных есть параметр задаваемый руками вначале обработки.
Обрабатывается несколько файлов по очереди и в каждом нужно задавать параметры S1 и S2
вот пример:

Код:
S1 = 25.2
S2 = 95.2
Message_S1 = "Введите S1."
S1 = InputBox(Message_S1, Title, S1)
If S1 = "" Then GoTo MyEnd Else T = CDbl(S1) + 273

Message_S2 = "Введите S2."
S2 = InputBox(Message_S2, Title, S2)
If S2 = "" Or S2 < 0 Then GoTo MyEnd Else Sb = CDbl(S2) * 0.000000000001
Автор: MINZMINEK
Дата сообщения: 24.02.2011 17:37
помогите плиииииииз=)
Вычислит значения функций w=( (a^2+b^2)/(b^2+sqr(a*b)) )+ e^(-1-a) , где a=sin^2(n/m), b=cos(m-n/10)+1,17. Здесь n=102, m=12.
Автор: Shattrath
Дата сообщения: 28.02.2011 17:52
Доброго времени суток=) Помогите студенту, пожалуйста.

Есть задачка:
Составить проект для расчета результатов по формуле Y=1E3*Sin2(2*A2)
в зависимости от значения величины А, вводимой из окна списка ListBox,
в котором значение А может быть выбрано от 1 до 20 с шагом 1.
Показывать на экране значение А и результат Y.

Есть и "решение", на которое ругается компилятор, - выдает ошибку 'runtime error 424 Object Required',показывая что эта ошибка в 9й строке от начала программы (выделена жирным шрифтом). Подскажите, в чем может быть причина ошибки?

Private Sub FC_Click()
List1.AddItem Text1.Text
List1.ListIndex = List1.ListCount - 1
End Sub
Cls
Private Sub Form_Load()
Dim i As Byte
For i = 1 To 20
List1.AddItem i
Next
End Sub

Private Sub S_Click()
Cls
A = Val(List1)
Picture1.Cls
Picture1.Print "Значение А="; A
Picture1.Print "Значение Y="; 1E3*Sin^2(2*A^2)
Автор: spirt1g
Дата сообщения: 28.02.2011 19:12
тоже интересуют задачи по этой программе) школа 11 класс

1. подчитать количество нечётных цифр в последовательности.
2. вычислить сумму цифр в последовательности которые меньше 6.
заранее спасибо
Автор: dneprcomp
Дата сообщения: 28.02.2011 19:46
Shattrath
Похоже, что на Form_Load объект List1 еще не существует.
Попробуйте добавлять значения на Form_Initialize
PS. А зачем команда Cls стоит между ивентами? Может ошибка из-за нее?

Код: End Sub
Cls
Private Sub Form_Load()
Автор: Depthh
Дата сообщения: 15.03.2011 18:44
Люди кто может подсказать решение задачи по ВБ..я в этом не силен..но нужно срочно.Если есть знающие люди..прошу помоч..
1.    Выбрать вариант задания из табл. 7.3.-1.
2.    Получить числовое выражение конечной суммы и конечного произведения для выражения f1 (пределы изменения параметра i и значение переменной х выбрать произвольно с учетом области допустимых значений).
3.    Выполнить операцию подстановки значения переменной (k) в выражение f2 (k - выражение на которое заменяется переменная х).
4.    Рассчитать численное значение выражения f2 с использованием функций символьного процессора с 5-ю знаками точности (значения переменных, входящих в состав данного выражения, выбрать самостоятельно).
5.    Получить символьное выражение производной от функции f(х)=f3, а затем вычислить значение данной производной в произвольной точке, принадлежащей области допустимых значений.
6.    Получить символьное выражение интеграла от функции f(х)=f3 и вычислить значение определенного интеграла (пределы интегрирования выбрать самостоятельно).
7.    Произвести разложение выражения f3 на сомножители, а затем выполнить обратную операцию – упростить полученное выражение.
8.    Определить полиномиальные коэффициенты выражения f3.



Вот сам пример: f1= (3x-1)^i
f2=4(1-k^(1/2))ln(k)-10 k=z
f3=4(1+x(1/2))ln(x)-10
f4=x^2*sqrt(cos(x))


буду очень блпгодарен..367726499...это ICQ.если кторешится помочь несчастному студенту.спишемся..для дальнейшей помощи в учебе.в долгу не останусь.
Автор: r55Hitman
Дата сообщения: 04.04.2011 15:35

есть такая таблица, юзер вводит 3 значения в стандартный виндовский GUI (три текст бокса 3 значения: нач высота нач диаметр и конечная высота)
программа в зависимости от данных юзера выдает трудоемкость (зеленые числа)

сам пытался через иф зен го ту, но очень объемный текст получается(
и также через масивы но ниче толком не придумал, помогите пожалуйста
Автор: Legio
Дата сообщения: 04.04.2011 18:33
r55Hitman
Табличными значениями лучше оперировать в табличном редакторе -- который Excel.

Далее, принципиально избавиться от сложности не получится -- либо будет сложно заполнять исходные данные для простой проверки (а такую можно сделать), либо будет сложная проверка.


Цитата:
сам пытался через иф зен го ту, но очень объемный текст получается(

Лучше через трёхэтажный Select Case
Код будет несколько понятнее.


Цитата:
и также через масивы но ниче толком не придумал, помогите пожалуйста

Простым и тривиальным способом через массивы завести вряд ли получится. Надо трёхмерный массив объявлять; для каждого измерения либо свой набор констант, либо свой Enum; а потом всё равно будет трёхэтажный If/Select Case.


И о простой проверке -- навскидку придумался вариант с коллекциями, но не думаю, что им стоит пользоваться (хоть он и работает)
[more]
Код: Option Explicit

Private data_storage As Collection

Private Sub Form_Load()

On Error GoTo ErrorHandler

InitializeData

Dim found_data As String
Dim value1 As String, value2 As String, value3 As String
value1 = "100" 'Text1.Text
value2 = "80" 'Text2.Text
value3 = "40" 'Text3.Text
found_data = FindData(value1, value2, value3)
MsgBox found_data

value1 = "100" 'Text1.Text
value2 = "20" 'Text2.Text
value3 = "80" 'Text3.Text
found_data = FindData(value1, value2, value3)
MsgBox found_data

value1 = "100" 'Text1.Text
value2 = "80" 'Text2.Text
value3 = "200" 'Text3.Text
found_data = FindData(value1, value2, value3)
MsgBox found_data

value1 = "500" 'Text1.Text
value2 = "80" 'Text2.Text
value3 = "200" 'Text3.Text
found_data = FindData(value1, value2, value3)
MsgBox found_data

value1 = "400" 'Text1.Text
value2 = "400" 'Text2.Text
value3 = "200" 'Text3.Text
found_data = FindData(value1, value2, value3)
MsgBox found_data


ErrorHandler:
End
End Sub

Private Sub InitializeData()

On Error GoTo ErrorHandler


Set data_storage = New Collection
With data_storage
.Add New Collection, "100"
With .Item(.Count)
.Add New Collection, "40"
With .Item(.Count)
.Add "0.060", "40"
.Add "0.057", "60"
.Add "0.054", "80"
'.Add "", "100"
'.Add "", "120"
'.Add "", "160"
'.Add "", "200"
End With

.Add New Collection, "60"
With .Item(.Count)
.Add "0.062", "40"
.Add "0.060", "60"
.Add "0.058", "80"
'.Add "", "100"
'.Add "", "120"
'.Add "", "160"
'.Add "", "200"
End With

.Add New Collection, "80"
With .Item(.Count)
.Add "0.064", "40"
.Add "0.061", "60"
.Add "0.060", "80"
'.Add "", "100"
'.Add "", "120"
'.Add "", "160"
'.Add "", "200"
End With

.Add New Collection, "100"
With .Item(.Count)
.Add "0.068", "40"
.Add "0.064", "60"
.Add "0.063", "80"
'.Add "", "100"
'.Add "", "120"
'.Add "", "160"
'.Add "", "200"
End With

.Add New Collection, "125"
With .Item(.Count)
.Add "0.074", "40"
.Add "0.071", "60"
.Add "0.070", "80"
'.Add "", "100"
'.Add "", "120"
'.Add "", "160"
'.Add "", "200"
End With

.Add New Collection, "160"
With .Item(.Count)
.Add "0.089", "40"
.Add "0.088", "60"
'.Add "", "80"
'.Add "", "100"
'.Add "", "120"
'.Add "", "160"
'.Add "", "200"
End With
End With

.Add New Collection, "125"
With .Item(.Count)
.Add New Collection, "60"
With .Item(.Count)
.Add "0.067", "40"
.Add "0.063", "60"
.Add "0.061", "80"
.Add "0.060", "100"
'.Add "", "120"
'.Add "", "160"
'.Add "", "200"
End With

.Add New Collection, "80"
With .Item(.Count)
.Add "0.068", "40"
.Add "0.064", "60"
.Add "0.063", "80"
.Add "0.061", "100"
'.Add "", "120"
'.Add "", "160"
'.Add "", "200"
End With

.Add New Collection, "100"
With .Item(.Count)
.Add "0.072", "40"
.Add "0.068", "60"
.Add "0.067", "80"
.Add "0.064", "100"
'.Add "", "120"
'.Add "", "160"
'.Add "", "200"
End With

.Add New Collection, "125"
With .Item(.Count)
.Add "0.079", "40"
.Add "0.075", "60"
.Add "0.072", "80"
.Add "0.071", "100"
'.Add "", "120"
'.Add "", "160"
'.Add "", "200"
End With

.Add New Collection, "160"
With .Item(.Count)
.Add "0.096", "40"
.Add "0.092", "60"
.Add "0.089", "80"
.Add "0.086", "100"
'.Add "", "120"
'.Add "", "160"
'.Add "", "200"
End With
End With

.Add New Collection, "160"
With .Item(.Count)
.Add New Collection, "100"
With .Item(.Count)
.Add "0.078", "40"
.Add "0.074", "60"
.Add "0.071", "80"
.Add "0.070", "100"
'.Add "", "120"
'.Add "", "160"
'.Add "", "200"
End With

.Add New Collection, "125"
With .Item(.Count)
.Add "0.086", "40"
.Add "0.079", "60"
.Add "0.077", "80"
.Add "0.075", "100"
'.Add "", "120"
'.Add "", "160"
'.Add "", "200"
End With

.Add New Collection, "160"
With .Item(.Count)
.Add "0.103", "40"
.Add "0.099", "60"
.Add "0.095", "80"
.Add "0.091", "100"
'.Add "", "120"
'.Add "", "160"
'.Add "", "200"
End With
End With

.Add New Collection, "200"
With .Item(.Count)
.Add New Collection, "125"
With .Item(.Count)
.Add "0.099", "40"
.Add "0.092", "60"
.Add "0.091", "80"
.Add "0.089", "100"
.Add "0.086", "120"
.Add "0.084", "160"
'.Add "", "200"
End With

.Add New Collection, "160"
With .Item(.Count)
.Add "0.127", "40"
.Add "0.123", "60"
.Add "0.117", "80"
.Add "0.115", "100"
.Add "0.115", "120"
.Add "0.112", "160"
'.Add "", "200"
End With

.Add New Collection, "200"
With .Item(.Count)
.Add "0.294", "40"
.Add "0.290", "60"
.Add "0.277", "80"
.Add "0.283", "100"
.Add "0.281", "120"
.Add "0.280", "160"
'.Add "", "200"
End With
End With

.Add New Collection, "250"
With .Item(.Count)
.Add New Collection, "125"
With .Item(.Count)
'.Add "", "40"
.Add "0.109", "60"
.Add "0.103", "80"
.Add "0.102", "100"
.Add "0.099", "120"
.Add "0.095", "160"
'.Add "", "200"
End With

.Add New Collection, "160"
With .Item(.Count)
'.Add "", "40"
.Add "0.136", "60"
.Add "0.130", "80"
.Add "0.129", "100"
.Add "0.124", "120"
.Add "0.123", "160"
'.Add "", "200"
End With

.Add New Collection, "200"
With .Item(.Count)
'.Add "", "40"
.Add "0.308", "60"
.Add "0.294", "80"
.Add "0.290", "100"
.Add "0.288", "120"
.Add "0.284", "160"
'.Add "", "200"
End With

.Add New Collection, "250"
With .Item(.Count)
'.Add "", "40"
.Add "0.328", "60"
.Add "0.322", "80"
.Add "0.319", "100"
.Add "0.316", "120"
.Add "0.309", "160"
'.Add "", "200"
End With
End With

.Add New Collection, "320"
With .Item(.Count)
.Add New Collection, "180"
With .Item(.Count)
'.Add "", "40"
.Add "0.307", "60"
.Add "0.301", "80"
.Add "0.297", "100"
.Add "0.294", "120"
.Add "0.288", "160"
.Add "0.284", "200"
End With

.Add New Collection, "200"
With .Item(.Count)
'.Add "", "40"
.Add "0.322", "60"
.Add "0.319", "80"
.Add "0.314", "100"
.Add "0.308", "120"
.Add "0.304", "160"
.Add "0.300", "200"
End With

.Add New Collection, "250"
With .Item(.Count)
'.Add "", "40"
.Add "0.364", "60"
.Add "0.363", "80"
.Add "0.359", "100"
.Add "0.350", "120"
.Add "0.346", "160"
.Add "0.340", "200"
End With

.Add New Collection, "320"
With .Item(.Count)
'.Add "", "40"
.Add "0.391", "60"
.Add "0.388", "80"
.Add "0.378", "100"
.Add "0.371", "120"
.Add "0.366", "160"
.Add "0.363", "200"
End With
End With

.Add New Collection, "400"
With .Item(.Count)
.Add New Collection, "200"
With .Item(.Count)
'.Add "", "40"
'.Add "", "60"
'.Add "", "80"
'.Add "", "100"
'.Add "", "120"
.Add "0.325", "160"
.Add "0.322", "200"
End With

.Add New Collection, "250"
With .Item(.Count)
'.Add "", "40"
'.Add "", "60"
'.Add "", "80"
'.Add "", "100"
'.Add "", "120"
.Add "0.356", "160"
.Add "0.350", "200"
End With

.Add New Collection, "320"
With .Item(.Count)
'.Add "", "40"
'.Add "", "60"
'.Add "", "80"
'.Add "", "100"
'.Add "", "120"
.Add "0.394", "160"
.Add "0.380", "200"
End With

.Add New Collection, "400"
With .Item(.Count)
'.Add "", "40"
'.Add "", "60"
'.Add "", "80"
'.Add "", "100"
'.Add "", "120"
.Add "0.437", "160"
.Add "0.433", "200"
End With
End With
End With 'data_storage


Exit Sub
ErrorHandler:
'...

End Sub

Private Function FindData(ByVal crit1 As String, ByVal crit2 As String, ByVal crit3 As String) As String

Const DEFAULT_RETURN_DATA As String = "0"

On Error GoTo ErrorHandler

Dim return_data As String: return_data = DEFAULT_RETURN_DATA
return_data = data_storage(crit1)(crit2)(crit3)
FindData = return_data


Exit Function
ErrorHandler:
FindData = DEFAULT_RETURN_DATA

End Function
Автор: asbo
Дата сообщения: 04.04.2011 19:03
r55Hitman, Legio, или я чего-то не понял, или...

... тут ведь обыкновенный трехмерный массив. Значения элементов не вычисляются. Забиваются раз и навсегда. Разве задача стоит заполнить массив? Задача сделать из него выборку. В чем тут-то проблема? Первое измерение - высота заготовки, второе - диаметр, третье - высота поковки. Действительных значений всего 122 (глазами считал).

Dim vArray(1 to 7, 1 to 10, 1 to 7)
и погнали 122 строки :) Это в четыре раза меньше, чем код Legio.

Бзв, Legio, может быть это дацзыбао в море спрятать?



Автор: Legio
Дата сообщения: 05.04.2011 05:30
asbo

Цитата:
может быть это дацзыбао в море спрятать?

Хорошая штука, давно было интересно, как такое делается


Цитата:
... тут ведь обыкновенный трехмерный массив.

Ну так всё равно будет условие на три уровня вложенности, чтобы получить элемент массива.
Автор: asbo
Дата сообщения: 05.04.2011 07:35
Legio, я знал, что понравится :) (это про море)

Это про код. Думал, дальше понятно будет :) Памяти-то сейчас немеряно, так? Так.
Вот и делаем:
Dim vArray(100 to 400, 40 to 400, 40 to 200)
vArray(200, 125, 80) = 0.091
Дальше рассказывать? :)
Автор: r55Hitman
Дата сообщения: 05.04.2011 15:09
asbo, Legio
спасибо за идеи
не сочтите за слабоумного) я asbo понял так
задать всю трудоемкость (зеленые числа) через пересечения, НО юзер же может ввести не целое значение? т.е. надо задать округление, которое будет округлять не просто до целого значения, а до определенного числа (пример юзер вводить диаметр заготовки: 42,6 (мм) и перед тем как искать это пересечение надо округлить до 60мм?
Автор: asbo
Дата сообщения: 05.04.2011 15:34
r55Hitman
* не сочтите за слабоумного
- да упаси Господь :)

Если это сортамент, то вольностей быть не должно. Если же это просто ориентировочная эмпирическая таблица, то тут уж Вам флаг в руки. Так ведь можно дойти и до интерполяции результатов... Идите от простого к сложному.

Я бы реализовал, для начала, самый простой вариант - с жестко заданным набором значений... Скажем, три листбокса с .LimitToList = True Пусть юзер на первых порах уж сам округляет до ближнего целого. Тем более, что выбор - на экране. Если на выходе ноль - возврат.

Потом можно сделать массивы разрешаемых соответствий. Используя их можно ограничивать списки только допустимыми величинами. Ну, и далее, и далее... :)
Автор: PALbICH
Дата сообщения: 03.06.2011 05:18
Всем привет!
Прошу помощи. Есть следующий код в VBA в Outlook 2007:

Код:
Option Base 1
Dim i
Dim Equip()

Sub macro1()
Equip = Array("C1", "C2", "C3")
Dim myMail As Outlook.MailItem
For i = 1 To UBound(Equip)
Set myMail = Application.CreateItemFromTemplate("C:\Users\...\Templates\template.oft")
myMail.Subject = "test" + Equip(i)
myMail.Display
Next
End Sub
Автор: Legio
Дата сообщения: 03.06.2011 05:39
PALbICH
Если я правильно понимаю то, что набингилось -- надо копаться в одном из трёх body MailItem'а ( .Body / .HTMLBody / .RTFBody ).
Автор: PALbICH
Дата сообщения: 03.06.2011 07:58
А как в нем копнуть? Если представите это в виде строчки кода (или двух), буду очень благодарен.

Добавлено:
что-то вроде такого:

Код:
for each чего-то in myMail.Body
if найдено Eq No then заменить его на Eq No C1
next
Автор: PALbICH
Дата сообщения: 07.06.2011 12:41
Снова прошу помощи. В Outlook 2007 есть входящее письмо с содержимым вида:

1


Temperature alarm
65С

2


Ok

3


Temperature alarm
68С

Надо произвести поиск в теле письма по слову "Temperature" и каждый раз, когда это слово найдено, записывать в текстовую переменную 3 строки:
1) строчку за 3 строки перед той, в которой найдено слово "Temperature"
2) саму строчку, в которой найдено слово "Temperature"
3) следующую за ней строчку

Т.е. в результате по вышеприведенному примеру письма должно получиться 2 переменные (или строковый массив):

1-я переменная:

1
Temperature alarm
65С

2-я переменная:

3
Temperature alarm
65С

Как это сделать? В голове крутится что-то вроде такого:

Код:
If InStr(myMail.HTMLBody, "Temperature") > 0 Then
....
End If
Автор: Legio
Дата сообщения: 07.06.2011 17:35
Во-первых, не очень понятно, чего вы так к .HTMLBody привязались. В .Body должен быть plaint-text, с ним куда удобнее работать -- как минимум из-за того, что нет html-разметки. (Разве что Outlook только одно из трёх свойств заполняет...)
Во-вторых, не очень понятно, что означают эти три переменные -- что письма три? что в теле письма temperature может встречаться больше одного раза?

Допустим, что в каждом отдельно взятом письме temperature может встретиться не более одного раза. И что письмо в .Body всё-таки есть. Тогда навскидку можно попровать как-то так:

Код: Dim splitBody() As String
splitBody = Split(myMail.Body, vbCrLf) 'бьём тело письма в массив строк

Dim i As Integer
For i = 0 To UBound(splitBody)
'если в текущей строке встретилось temperature -- выходим из цикла
If (splitBody(i) Like "*Temperature*") Then Exit For
Next i

Dim someVar As String 'переменная для хранения результата

' тут механизм простой -- если индекс цикла (i) вышел за
' верхнюю границу массива, значит temperature не было
' найдено и ловить в этом MailItem'е нечего
If (i <= UBound(splitBody)) Then

someVar = vbNullString 'на всякий случай

'если существует строчка "за 3 строчки до той", добавляем её к результату
If (i > 3) Then someVar = someVar & splitBody(i - 3) & vbCrLf

'добавляем строчку с многострадальной temperature
someVar = someVar & splitBody(i) & vbCrLf

'если существует следующая строчка, добавляем её к результату
If (i < UBound(splitBody)) Then someVar = someVar & splitBody(i + 1)

End If
Автор: PALbICH
Дата сообщения: 08.06.2011 12:54
Большое спасибо, очень помогли!
Автор: PALbICH
Дата сообщения: 21.07.2011 19:05
Подскажите пожалуйста, есть ли в VBA готовая функции или код, делающие выделение номера сети и узла из IP-адреса по маске?
Можно конечно написать код с разложением в двоичку, накладыванием маски на адрес и т.д., но может это уже решено и существует типовая функция или код?

Например:

Исходные данные:
IP-адрес: 192.168.0.102
Маска: 255.255.255.252

Необходимо получить:
Номер сети: 192.168.0.100
Номер узла: 2
Автор: blaro
Дата сообщения: 21.07.2011 19:13
PALbICH
Насколько я помню это простая бинарная операция XOR. Делишь IP на 4 сегмента и между ними XOR.
Автор: Legio
Дата сообщения: 22.07.2011 04:53
Гугл ничего не подсказал, но на скорую руку слепилось что-то вроде такого:

Код:
MsgBox (255 And 192) & _
"." & (255 And 168) & _
"." & (255 And 0) & _
"." & (252 And 102)
MsgBox ((252 And 102) Xor 102)

'или оно же, но через исходные данные
Dim ip As String, mask As String
ip = "192.168.0.102"
mask = "255.255.255.252"
MsgBox (CByte(Split(mask, ".")(0)) And CByte(Split(ip, ".")(0))) & _
"." & (CByte(Split(mask, ".")(1)) And CByte(Split(ip, ".")(1))) & _
"." & (CByte(Split(mask, ".")(2)) And CByte(Split(ip, ".")(2))) & _
"." & (CByte(Split(mask, ".")(3)) And CByte(Split(ip, ".")(3)))

MsgBox ((CByte(Split(mask, ".")(3)) And CByte(Split(ip, ".")(3))) Xor CByte(Split(ip, ".")(3)))
Автор: PALbICH
Дата сообщения: 22.07.2011 10:35
Спасибо!
Автор: co_bratva
Дата сообщения: 06.09.2011 17:05

Цитата:
Думаю, что не так сложно "облагородить" это в отдельную функцию/процедуру, которая бы принимала два текстовых параметра и возвращала чаемое каким-нибудь понятным способом.

Legio
Проверь, совпадают ли все проперти для форм и контролов. Если выложишь два проекта - рабочий и нет - то можно попробовать посмотреть.
PS. ME всего лишь keyword, заменяющий имя вызывающей формы. С тем же успехом можно подставлять имя формы. Кстати, тут и может быть ошибка, если вызываешь из одной формы, а расчитываешь получить эффект в другой.
Автор: alin
Дата сообщения: 15.09.2011 15:06
Возможно ли решить мою задачу?
Имеем много файлов (в моём случае фото) с именем дата. Есть файл "file.txt" (или file.csv), в котором в столбец даны названия каждой фотографии. Сортировка по имени фото совпадает с порядком названий в текстовом файле. Как мне "пакетно" переименовать фото согласно названиям из текстового файла? Можно в Екселе изменить названия добавив в начало дату из имени файла, чтобы совпадали первые символы в имени файла, и в названии из file.csv. Но как переименовать пакетно файлы я не нашёл способа.
Автор: asbo
Дата сообщения: 15.09.2011 15:26
alin
Вот тут ну о-очень похожая задача :)

Если в Екселе удается создать схему переименования, то циклом по строкам:
Name oldpathname As newpathname

Using Name on an open file produces an error. You must close an open file before renaming it. Name arguments cannot include multiple-character (*) and single-character (?) wildcards.

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940

Предыдущая тема: для Hiper-six (индексы .nsx .smt) хоть что нибудь Опции


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.