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

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


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

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Basic/VBA

Выпуск № 577
от 24.07.2007, 16:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 287, Экспертов: 40
В номере:Вопросов: 2, Ответов: 10


Вопрос № 95595: Уважаемые эксперты! Я работаю в гос. организацие и нашем в регионах много компьютеров. Но каждого из ных мы контролировать не умеем. Просто возможности нету. Мне нужна программный код который удаляет mp3,avi и mpg файлов. От этого нам нету ползы. Пот...
Вопрос № 95656: Я из значений таблицы экселя формирую своим макросом текстовый файл (*.txt) причем если попадается дробное число он записывается в мой файл с разделительным знаком - запятая. А мне очень важно чтобы разделительный знак была точка, что вы можете посов...

Вопрос № 95.595
Уважаемые эксперты! Я работаю в гос. организацие и нашем в регионах много компьютеров. Но каждого из ных мы контролировать не умеем. Просто возможности нету. Мне нужна программный код который удаляет mp3,avi и mpg файлов. От этого нам нету ползы. Потаму что много вирусов.
Как надо создать программу, который автоматический ищет mp3, avi и mpg файлы и удаляет его без разрешение?
Спасибо за ответ.
Отправлен: 18.07.2007, 20:12
Вопрос задал: Muhammedov Abdurohman (статус: 3-ий класс)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Nance
Здравствуйте, Muhammedov Abdurohman!
Clearer - Программа для автоматического удаления файлов по заданной маске. Есть возможность задать неограниченное количество папок и масок для удаления файлов в этих папках. Опционально: - запуск с системой - выход из программы по завершении очистки. скачать можно здесь http://itshareware.by.ru/utilities/disk_and_file_system/clearer.shtml. Абсолютно бесплатная!

(По данной ссылке можно перейти на страницу, где указан URL домашней страницы автора программы. Но при попытке зайти на страницу выдается 404 Not Found. Проверяйте ссылки на работоспособность.) [ Климова М. ]
Ответ отправила: Nance (статус: 3-ий класс)
Ответ отправлен: 18.07.2007, 20:42
Оценка за ответ: 4
Комментарий оценки:
Спасибо, сам и так подумал. Но вот ссылка неработает

Отвечает: PsySex
Здравствуйте, Muhammedov Abdurohman!
Код для модуля в приложении, при создании проекта форму удалить. Скомпиленный файл в автозагрузку. Поиск идет по всем локальным жестким дискам.

Приложение:

---------
Bom Shankar!

Ответ отправил: PsySex (статус: Практикант)
Ответ отправлен: 18.07.2007, 23:02
Оценка за ответ: 5
Комментарий оценки:
Спасибо. Сразу разобрался

Отвечает: Черников Игорь Владимирович
Здравствуйте, Muhammedov Abdurohman!
Этот код удаляет файлы *.MP3 с диска С: имейте в виду, что в папке Windiws находятся системные файлы *.avi и удалять естественно нельзя, будьте осторожны!

Private Sub Комманда1_Click()
Путь = "C:" ' Указывает путь.
Имя_папки = Dir(Путь, vbDirectory) ' Возвращает первый элемент.
Do While Имя_папки <> "" ' Начинает цикл. Игнорирует текущий каталог и каталог предыдущего уровня.
If Имя_папки <> "." And Имя_папки <> ".." Then ' Использует поразрядное сравнение для проверки того, является ли Имя_Папки каталогом.
If (GetAttr(Путь & Имя_папки) And vbDirectory) = vbDirectory Then
Колич_папок = Колич_папок + 1 ' Выводит элемент только в том случае, если это каталог.
Метка1.Caption = Колич_папок & " найдено"
Список_папок = Список_папок & Путь & Имя_папки & Chr(10)
End If
End If
Имя_папки = Dir ' Возвращает следующий элемент.
DoEvents
Loop
Do While i <> Len(Список_папок)
i = i + 1
ОдинСимвол = Mid(Список_папок, i, 1)
строка = строка + ОдинСимвол
If Asc(ОдинСимвол) = 10 Then
Путь = Mid(строка, 1, Len(строка) - 1) & ""
Имя_папки = Dir(Путь, vbDirectory)
Do While Имя_папки <> ""
If Имя_папки <> "." And Имя_папки <> ".." Then
If (GetAttr(Путь & Имя_папки) And vbDirectory) = vbDirectory Then
Колич_папок = Колич_папок + 1
Метка1.Caption = Колич_папок & " папок найдено"
Список_папок = Список_папок & Путь & Имя_папки & Chr(10)
End If
End If
Имя_папки = Dir ' Возвращает следующий элемент.
DoEvents
Loop
строка = ""
End If
Loop
i = 0
Колич_папок = 0

Do While i <> Len(Список_папок)
i = i + 1
ОдинСимвол = Mid(Список_папок, i, 1)
строка = строка + ОдинСимвол
If Asc(ОдинСимвол) = 10 Then
Путь = Mid(строка, 1, Len(строка) - 1) & ""
Имя_файла = Dir(Путь & "*.mp3")
Do While Имя_файла <> ""
Kill Путь & Имя_файла
Колич_папок = Колич_папок + 1
Метка2.Caption = Колич_папок & " файлов удалено"
Имя_файла = Dir
Loop
строка = ""
End If
DoEvents
Loop
End
End Sub
---------
От каждого по способностям, каждому по труду
Ответ отправил: Черников Игорь Владимирович (статус: 2-ой класс)
Ответ отправлен: 20.07.2007, 16:57
Оценка за ответ: 4
Комментарий оценки:
Этот код удаляет файлы *.MP3 с диска С:
Я бы хотел чтобы на винте все мп3 били удалены!


Вопрос № 95.656
Я из значений таблицы экселя формирую своим макросом текстовый файл (*.txt) причем если попадается дробное число он записывается в мой файл с разделительным знаком - запятая. А мне очень важно чтобы разделительный знак была точка, что вы можете посоветовать в такой ситуации?
Отправлен: 19.07.2007, 11:17
Вопрос задал: Mironicuss (статус: Посетитель)
Всего ответов: 7
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Over
Здравствуйте, Mironicuss!
В панели управления язык и региональные стандарты поставьте разделитель точка.
Или там же выберите языковой стандарт Английский(США).
Ответ отправил: Over (статус: 3-ий класс)
Ответ отправлен: 19.07.2007, 11:21
Оценка за ответ: 1
Комментарий оценки:
Такой вариант неприемлем, до таких элементарных вещей я и сам додумался

Отвечает: din
Здравствуйте, Mironicuss!
Перед тем как начать экспорт данных указываем
Application.DecimalSeparator = "."
Application.UseSystemSeparators = False
И все.

Удачи!

---------
Есть только одно зло - невежество, и только одно благо - знания
Ответ отправил: din (статус: Практикант)
Ответ отправлен: 19.07.2007, 11:33

Отвечает: PsySex
Здравствуйте, Mironicuss!
При чтении из ячейки дробного значения, сделайте следующую операцию
vCellVal - значение ячейки
sNewVal = Replace(Str(vCellVal), ",", ".")
и затем используем sNewVal при печати в файл, функция ищет запятую и заменяет на точку.
Если разработка идет в Excell97, то там нет функции Replace, используем свою функцию ReplaceSymb, код в приложении, синтаксис такой же.

Приложение:

---------
Bom Shankar!

Ответ отправил: PsySex (статус: Практикант)
Ответ отправлен: 19.07.2007, 11:34
Оценка за ответ: 5
Комментарий оценки:
Отлично! То что нужно большое спасибо

Отвечает: Nance
Здравствуйте, Mironicuss!
Я вам посоветую сделать ваш макросс следующим образом: Организуйте динамический массив, в который внесите все ваши данные, сначали тип массива задайте как числовой, после того как все данные будут внесены и дроби преобразуются в десятичные числа, измените тип всех элементов массива на текстовый, а затем используя процедуру поиска в цикле найдите все запятые и замените их на точки, а после этого сохраните ваш новый массив в текстовый файл. Код программы должен получиться короткий, к сожалению у меня в данный момент нет возможности написать его и выслать вам, но я уже сталкивалась с подобной проблемой и вышла из ситуации именно так. Желаю удачи!
Ответ отправила: Nance (статус: 3-ий класс)
Ответ отправлен: 19.07.2007, 12:14

Отвечает: xackera
Здравствуйте, Mironicuss!
Едиснтвенно что мгу посоветовать это при записи данных в файл преобразовать данные полученные из значений таблиц Excel в тип строка и в полученной переменной произвести замену запятой на точку.
Для этого необходимо функция замены символов, которая приведена ниже.
в качестве входных параметром
Stroka - строка в которой необходимо заменит символ на другой (в данном случае запятую на точку)
SimvolIsh - символ, который необходимо заменит (в данном случае запятую)
SimvolNew - символ на который заменяется (в данном случае точка)
Private Function ZamenaSimvolov(ByVal Stroka As String, ByVal SimvolIsh As String, ByVal SimvolNew As String) As String
'Замена всех символов SimvolIsh другими в заданной строке
Dim cS As String, cS1 As String, cS2 As String
Dim i As Integer, iP As Long
cS = Stroka
'Если новые и старые символы совпадают
If SimvolIsh = SimvolNew Then
ZamenaSimvolov = cS
Exit Function
End If
i = Len(SimvolIsh)
iP = InStr(1, cS, SimvolIsh)
Do While iP > 0
cS1 = Left(cS, iP - 1)
cS2 = Right(cS, Len(cS) - iP - i + 1)
cS = cS1 & SimvolNew & cS2
iP = InStr(1, cS, SimvolIsh)
Loop
ZamenaSimvolov = cS
End Function
---------
Больше быть, чем казаться! Много делать, но мало выделяться
Ответ отправил: xackera (статус: 4-ый класс)
Ответ отправлен: 19.07.2007, 13:55
Оценка за ответ: 5

Отвечает: Черников Игорь Владимирович
Здравствуйте, Mironicuss!
Самый простой способ изменить национальные настройки в windows, и поставить вместо запятой точку (панель управления - язык и региональные стандарты), но это может повлиять на другие приложения.
Поменять запятую на точку можно и программно, вот код:
temp = Range("A1")
For i = 1 To Len(temp)
If Mid(temp, i, 1) = "," Then
Mid(temp, i, 1) = "."
Exit For
End If
Next i
Здесь из ячейки А1 (можно программно задать любую ячейку) берётся значение, загоняется в переменную temp, находится в ней запятая и заменяется на точку, затем значение этой переменной можно будет записать в твой файл, но не обратно в эксель. Если так необходимо записать её обратно в ячейку, то её нужно сделать сначала обязательно сделать текстовой:

Range("A1").Select
Selection.NumberFormat = "@"

---------
От каждого по способностям, каждому по труду
Ответ отправил: Черников Игорь Владимирович (статус: 2-ой класс)
Ответ отправлен: 20.07.2007, 17:25
Оценка за ответ: 5

Отвечает: Alec Perle
Здравствуйте, Mironicuss!
Можно воспользоваться функцией Str(). Она преобразует число в строку, где разделитель целой и дробной части всегда точка.

Приложение:

---------
Пессимист - это хорошо информированный оптимист (а оптимист - хорошо проинструктированный пессимист)

Ответ отправил: Alec Perle (статус: Студент)
Ответ отправлен: 21.07.2007, 21:58
Оценка за ответ: 5


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Email: support@rusfaq.ru, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.53 beta от 09.07.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное