Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Помогите с Excel -ем Добавлено: 01.04.04 13:16  

Автор вопроса:  spiderspy

Народ помогите.

Нужен макрос в Excel, что бы он в определенной папке находил все файлы Excel

и копировал из каждого файла лист в открытую книгу.

(в каждом файле 1 лист, имена листов разные и кника защищена паролем)

Ответить

  Ответы Всего ответов: 5  

Номер ответа: 1
Автор ответа:
 night-roll



Вопросов: 36
Ответов: 326
 Профиль | | #1 Добавлено: 05.04.04 01:15

если папка известна заранее, то нет проблем

правда если она выбирается пользователем, то тоже ничего страшного

ворпос в другом, знаешь ли ты пароль к той книге из которой хочешь стащить лист. если нет, то извини!

а по-моему алгоритм простой

Ответить

Номер ответа: 2
Автор ответа:
 spiderspy



Вопросов: 7
Ответов: 3
 Профиль | | #2 Добавлено: 05.04.04 10:15

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

Private Function GetValue(path, file, sheet, ref)
'   Retrieves a value from a closed workbook
    Dim arg As String

'   Make sure the file exists
    If Right(path, 1) <> "\" Then path = path & "\"
    If Dir(path & file) = "" Then
        GetValue = "File Not Found"
        Exit Function
    End If

'   Create the argument
    arg = "'" & path & "[" & file & "]" & sheet & "'!" & _
      Range(ref).Range("A1").Address(, , xlR1C1)

'   Execute an XLM macro
    GetValue = ExecuteExcel4Macro(arg)
End Function

Sub TestGetValue2()
    p = "c:\XLFiles\Budget"
    f = "99Budget.xls"
    s = "Sheet1"
    Application.ScreenUpdating = False
    For r = 1 To 100
        For c = 1 To 12
            a = Cells(r, c).Address
            Cells(r, c) = GetValue(p, f, s, a)
        Next c
    Next r
    Application.ScreenUpdating = True
End Sub

night-roll

Если не трудно напиши, а то я у же нечего не соображаю.

 

Ответить

Номер ответа: 3
Автор ответа:
 night-roll



Вопросов: 36
Ответов: 326
 Профиль | | #3 Добавлено: 09.04.04 15:45

Че-то мудрено тут накорябано. Вообщем, задача ясна - жди примера!   

P.S. а че пояснения на ангийском и потом странная проверка у тебя на наличие файла - заранее известного причем.    

Ответить

Номер ответа: 4
Автор ответа:
 night-roll



Вопросов: 36
Ответов: 326
 Профиль | | #4 Добавлено: 11.04.04 22:20

Option Explicit

Sub Макрос1()

Dim fileToOpen As String ' объявляем переменную типа строка
Dim filesName As String  ' объявляем переменную типа строка
Dim i As Long            ' объявляем переменную типа длинное, говорят, что оно место < занимает чем Integer

filesName = ""  ' не дай БОГ там что-нибудь осталось

fileToOpen = Application.GetOpenFilename("выбирете нужный файл , *.xls") ' фильтр открытия файла
   
' ищем само наименование файла (читаем строку fileToOpen с конца до символа \

    For i = Len(fileToOpen) To 1 Step -1    ' считаем с конца строки
   
        If Mid$(fileToOpen, i, 1) <> "\" Then ' если мы не встретили символ \
            filesName = Mid$(fileToOpen, i, 1) & filesName ' то присваиваем символ к будущему имени файла
        Else
            GoTo 1 ' если все же натолкнулись на \, то идем дальше - к метке 1
       
        End If
    Next
   
1:
     Workbooks.Open Filename:=fileToOpen ' открываем указанный нам файл
    
     Sheets("Лист1").Copy After:=Workbooks("NR.xls").Sheets(1) ' копируем лист с именем Лист1 в нашу книгу
    
     Windows(filesName).Close ' закрываем открытую книгу
    
End Sub

Ответить

Номер ответа: 5
Автор ответа:
 night-roll



Вопросов: 36
Ответов: 326
 Профиль | | #5 Добавлено: 11.04.04 22:22

если возникнут вопросы, не исключено, что я тебя неправильно понял, пиши сюда или на мыло

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам