Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: создать файлы с названиям которые соответствуют ячейкам в таблице excel  (Прочитано 10792 раз)
0 Пользователей и 1 Гость смотрят эту тему.
cybereug
Гость
« : 28-03-2006 14:00 » 

Помогите пожалуйста макросом или програмкой которая осуществит сабж, срочно нужно. Заранее спасибо!
Записан
RomCom
Опытный

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 29-03-2006 00:33 » 

Создать файлы с произвольными именами проблем нет.
Непонятно зачем, какую информацию туда записывать, в каком формате должны быть файлы?
Что значит "соответствуют ячейкам в таблице excel"? С именами A1,A2...Z999 чттоли?
Записан

R.O.M.C.O.M.: Robotic Operational Mathematics and Ceaseless Observation Machine
cybereug
Гость
« Ответ #2 : 29-03-2006 05:35 » 

Смысл примерно такой, есть 10 тысяч товаров в каталоге с сылками на картинким, к ним есть 9 тысяч фоток, а 1000 фоток не хватает, поэтому их нужно заменить одинаковой картинкой типа "фото отсутствует". Для того чтобы не искать названия каждой отсутствующей картинки (физический руками почти невозможно) надо взять названия картинки из каталога (он в формате excel) и создать с этими названиями файл с одинаковой картинкой. А потом просто достаточно сравнить 2 папки и скопировать не достающие файлы. Названия файлов идут по порядку A1 = nazvanie1.jpg, A2 = nazvanie2.jpg и т.д. В итоге должны получиться эти самые файлы nazvanie1.jpg, nazvanie2.jpg..
« Последнее редактирование: 29-03-2006 05:57 от cybereug » Записан
PooH
Глобальный модератор

ru
Offline Offline
Пол: Мужской
... и можно без хлеба!


« Ответ #3 : 29-03-2006 06:52 » 

можно обойтись и без VBA. Скопируй имена файлов в простой текстовый файл "names.txt", например:
Код:
1.jpg
2.jpg

картинку которую надо размножить называешь, например, orig.jpg

потом делаешь батник - dubl.bat
Код:
for /F %%f in (names.txt) do copy orig.jpg %%f

и все!
Записан

Удачного всем кодинга! -=x[PooH]x=-
RomCom
Опытный

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #4 : 29-03-2006 07:11 » 

через VBA примерно так это можно сотворить Улыбаюсь
Код:
Sub SuperMacros()
 Dim i As Integer, templ, s As String
 Set fs = CreateObject("Scripting.FileSystemObject")
 templ = "c:\temp\noperson.jpg" 'картинка типа "фото отсутствует".
 For i = 1 To 1000 
  s = Лист1.Cells(1, i).Text
  If s <> "" Then
   fs.CopyFile templ, "c:\temp\test\" & s  'собственно копирование
  End If
 Next
End Sub
« Последнее редактирование: 19-12-2007 22:16 от Алексей1153++ » Записан

R.O.M.C.O.M.: Robotic Operational Mathematics and Ceaseless Observation Machine
npak
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #5 : 29-03-2006 07:21 » 

Вот пример кода, который проходит по колонке: значение ячеек в колонке интерпретируются как имена файлов, если файла с таким именем нет, то на его место копируется некоторый эталонный файл

Код:
Const referenceFile As String = "c:\no_photo.jpg"

Sub CreateMissingFiles()
    Dim fileCell As Range
    Dim fileName As String
    Dim fso As FileSystemObject
    Dim counter As Integer
    counter = 0
    Set fso = New FileSystemObject
    
    For Each fileCell In Range("A1", "A10")
        On Error Resume Next
        fileName = fileCell.Value
        If fileName = "" Then GoTo Skip
        
        If Not fso.FileExists(fileName) Then
            Call fso.CopyFile(referenceFile, fileName, False)
            counter = counter + 1
        End If
Skip:
    Next
    MsgBox "done, created " & counter & " files"
End Sub

Константа referenceFile содержит путь к эталонному файлу.
То, какие ячейки пробегать, задаётся в выражении Range("A1", "A10").  Замени на Range("A1", "A10000") и будет почти то, что нужно.  Для того, чтобы заработало, надо в редакторе Visual Basic пойти в Tools->References и поставить галочку напротив Microsoft Dcripting Runtime
Записан

UniTesK -- индустриальная технология надежного тестирования.

http://www.unitesk.com/ru/
cybereug
Гость
« Ответ #6 : 29-03-2006 11:58 » 

Я вставил этот код в макросы excel, он выдает ошибку:

compile error:
User-defined type not defined

выделяет эту строчку Dim fso As FileSystemObject
« Последнее редактирование: 29-03-2006 12:23 от cybereug » Записан
cybereug
Гость
« Ответ #7 : 29-03-2006 12:42 » 

Подключил в Tools/references Microsoft Script Runtime заработало. Спасибо!
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines