Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 След.
Массовый импорт данных
 
Походу вопрос трудный, ладно.  
Решил сделать обработку файов поочередно. Тоесть, каждый файл отдельно. Вписал это всё в один макрос, который получился просто невероятно большим. Значит нужно разбивать по разным макросам.  
Вопрос: существует ли такой макрос, чтобы им можно было запускать другие макросы?  
________  
35853 - красиво)
Массовый импорт данных
 
Уважаемые гуру,  
 
Извините что я к Вам такой молодой обращаюсь, но назрела проблемка над которой я уже бьюсь второй день.  
 
Значит задача следующая:  
Есть папка в которой содержиться 49 файлов Екселя. В каждом файле есть 3 листа (Inventarisatie, Subdistributie, Lists). Мне нужно из этих файлов импортировать по 2 листа (Inventarisatie и Subdistributie) в новый файл. Задача усложняется тем, что в некоторых ячейках есть более 255 знаков, тоесть можно только копировать значения и вставлять на новый лист.    
 
Проблема:  
На данный момент использую макрос, объединяющий действия открытия всех файлов в определенной папке, Копирования диапазона, создания нового листа, вставка значений (и формата), переименования листа, и закрытия всех исходных 49 файлов (код макроса в прикрепленом файле). Всё работает, но есть одно но! Я смог сделать чтобы копировало (назовем это так) один лист. Но как сделать чтобы те же действия происходили и с другим листом в исходном файле?  
 
При записи действий макрорекордером он ссылается на другой файл с указанием его имени в коде. Это не очень удобно.  
 
Конечно можно пойти более простым путем и сделать обработку данных с поочередным открытием файлов (с указанием их имен). Но тогда получится очень объемный и не красивый код.  
 
Сорри за много буков. Надеюсь суть изложил понятно.  
Заранее спасибо.  
 
С уважением,  
SpagoR
Закрытие всех книг кроме активной
 
{quote}{login=sva}{date=07.12.2011 08:23}{thema=}{post}Путь должен выглядеть так:  
sFolder="\\Sadnl\dfsnl\GRNL01\1883\Global\GD\"{/post}{/quote}  
 
не помогает
Закрытие всех книг кроме активной
 
{quote}{login=sva}{date=07.12.2011 08:11}{thema=}{post}Тогда, что за файл Andora.xls Excel пытается открыть?{/post}{/quote}  
 
Да правильный файл. В папке по вышеуказанному адресу лежит 49 файлов с названиями стран.    
 
Этот макрос должен все их открыть. Если делать по тому варианту который я предоставил, то всё нормально открывает (при выборе папки вручную). Если же прописать путь к файлу как вы показали, то выбивает ошибку.
Закрытие всех книг кроме активной
 
{quote}{login=sva}{date=07.12.2011 07:57}{thema=}{post}Какую?{/post}{/quote}  
 
Run-time error '1004':  
 
'Andora.xls' could not be found. Check the spelling of the file name and verify that file location is correct.  
 
If you are trying to open the file from your list of most recently used files on the File menu, make sure that the file has not been renamed, moved, or deleted.  
 
____________________________________-  
смысл ошибки я понимаю. Но дело в том что система же захватила имя файла из указанной папки.    
 
И ещё, путь к файлу выглядит так:  
\\Sadnl\dfsnl\GRNL01\1883\Global\GD  
 
Тоесть файл находится не на моем жестком диске, а на корпоративном сервере.
Закрытие всех книг кроме активной
 
{quote}{login=sva}{date=07.12.2011 07:48}{thema=}{post}Как-то так:  
Sub Get_All_Files()  
Dim sFolder As String, sFiles As String, li As Long  
sFolder = "D:\" 'здесь указываете свой путь  
Application.ScreenUpdating = False  
sFiles = Dir(sFolder & Application.PathSeparator & "*.xls*")  
Do While sFiles <> ""  
Workbooks.Open sFiles  
Sheets("Inventarisatie").Columns("A:Z").Select.Copy  
Windows("Book1").Activate  
Sheets("Sheet1").Select  
Sheets.Add  
Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _  
SkipBlanks:=False, Transpose:=False  
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _  
SkipBlanks:=False, Transpose:=False  
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _  
:=False, Transpose:=False  
Workbooks(sFiles).Close False  
Dim x As Variant  
x = [A3] & " Inventarisatie"
On Error Resume Next  
ActiveSheet.Name = x  
 
Range("A1").Select  
 
sFiles = Dir  
Loop  
Application.ScreenUpdating = True  
 
 
End Sub{/post}{/quote}  
 
выдает ошибку на строчке    
Workbooks.Open sFiles
Закрытие всех книг кроме активной
 
{quote}{login=Казанский}{date=07.12.2011 07:04}{thema=}{post}> при работе предыдущего макроса открывает 50 книг, обрабатывает информацию из них и потом они остаются открытыми  
 
А почему макрос не закрывает книгу после того как обработал ее?  
Где этот "предыдущий макрос"?{/post}{/quote}  
 
Ну вот собственно я и хочу чтобы он закрывал их) просто это макрос массового открытия из папки.  
____________________________________  
 
Sub Get_All_Files()  
Dim sFolder As String, sFiles As String, li As Long  
With Application.FileDialog(msoFileDialogFolderPicker)  
If .Show = False Then Exit Sub  
sFolder = .SelectedItems(1)  
End With  
Application.ScreenUpdating = False  
sFiles = Dir(sFolder & Application.PathSeparator & "*.xls*")  
Do While sFiles <> ""  
Workbooks.Open sFiles  
Sheets("Inventarisatie").Select  
   Columns("A:Z").Select  
   Selection.Copy  
   Windows("Book1").Activate  
   Sheets("Sheet1").Select  
   Sheets.Add  
   Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _  
       SkipBlanks:=False, Transpose:=False  
   Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _  
       SkipBlanks:=False, Transpose:=False  
   Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _  
       :=False, Transpose:=False  
     
   Dim x As Variant  
   x = [A3] & " Inventarisatie"
   On Error Resume Next  
   ActiveSheet.Name = x  
     
   Range("A1").Select  
     
sFiles = Dir  
Loop  
Application.ScreenUpdating = True  
 
 
End Sub  
 
____________________________________  
 
Ну и собственно в догонку вопрос - как убрать диалоговое окно выбора папки и сделать чтобы оно автоматически открывало файлы из конкретной папки?
Закрытие всех книг кроме активной
 
Ребят, как можно макросом закрыть все книги кроме активной?  
 
Просто при работе предыдущего макроса открывает 50 книг, обрабатывает информацию из них и потом они остаются открытыми.    
 
Мне же нужно их закрыть и продолжить работу над активным файлом
Поочередное открытие файлов из указанной папки
 
{quote}{login=Spagor}{date=07.12.2011 03:55}{thema=}{post}Вопрос по данному коду  
 
Если мне нужно чтобы одни и те же действия выполнялись (копирование всего из открываемого документа и вставка в новый лист в открытом документе) для всех документов, мне нужно прописать действия для каждого отдельно?{/post}{/quote}  
 
С этим разобрался. Теперь конкретно по открытию.    
Как изменить вышепредставленый код, чтобы не нужно было выбирать папку? тоесть чтобы открывались все файлы из, скажем    
\\Sadnl\dfsnl\GRNL01\1883\Global\GD  
?
Вставка в книгу нового листа и присвоение ему имени из определенной ячейки
 
Можно, работает, спасибо =)
Вставка в книгу нового листа и присвоение ему имени из определенной ячейки
 
Я использую такой код:  
 
Dim x As Variant  
   x = [A3]
   On Error Resume Next  
   ActiveSheet.Name = x  
 
В связи с этим вопрос:  
 
Можно сделать так, чтобы в названии существовало также слово Inventory?  
 
Тоесть  
А3 - name, а в названии листа отображалось как name inventory?
Поочередное открытие файлов из указанной папки
 
Вопрос по данному коду  
 
Если мне нужно чтобы одни и те же действия выполнялись (копирование всего из открываемого документа и вставка в новый лист в открытом документе) для всех документов, мне нужно прописать действия для каждого отдельно?
Импорт документа без лишних вопросов
 
{quote}{login=Hugo}{date=29.11.2011 01:00}{thema=}{post}После копирования удаляйте все ненужные имена.  
Код выше есть - чуть подправить по вкусу...  
Например, убрать вывод сообщения.{/post}{/quote}  
 
Всё, спасибо, я как все - сначала задаю вопрс, потом пользуюсь поиском (извините, каюсь. Через поиск сделал почти весь отчет)))  
 
собственно, нашел более понятный и простой код для удаления имен:  
_______________________________________  
Set AWB=ActiveWorkBook  
for i=AWB.Names.count to 1 step -1  
On Error Resume Next  
AWB.Names.Item(i).Delete  
Next  
_______________________________________  
 
Работает. Встрою его в макрос экспорта документа в самое начало. Думаю будет норм. Думаю, что тему можно закрыть ;)
Импорт документа без лишних вопросов
 
А что, ответа нету? ну ооочень нужно...    
Скоро отчеты сдавать, а файлы по 6мб отпралять мягко говоря - неудобно...
Неправильне сортування в Ексель 2007
 
Еще есть маленькое замечание - пишите вопрос на русском языке. Всё-таки многие украинского не знают...
Импорт документа без лишних вопросов
 
По данному вопросу назрела следующая проблема.  
При экспорте одного листа из рабочего документа экспортируются и все 6 мб имен, что не очень удобно для последующей отправки клиенту.    
 
Сейчас для жкспорта использую соедующий код:  
 
___________________________________________  
 
Sub Export_Data()  
On Error Resume Next  
 
Dim Sh As Worksheet: Set Sh = Sheets("HC Report")  
If Sh Is Nothing Then Exit Sub  
SU False: DA False  
NewFileName = GetNewFileName  
If Len(NewFileName) > 0 Then  
Sh.Copy  
ActiveWorkbook.Sheets("HC Report").Cells.Copy  
ActiveWorkbook.Sheets("HC Report").Cells.PasteSpecial xlPasteValuesAndNumberFormats  
ActiveWorkbook.SaveAs NewFileName  
ActiveWorkbook.Close False  
End If  
SU True: DA True: Set Sh = Nothing  
End Sub  
 
Sub SU(ByVal Update_Screen As Boolean): Application.ScreenUpdating = Update_Screen: End Sub  
Sub DA(ByVal Display_Alerts As Boolean): Application.DisplayAlerts = Display_Alerts: End Sub  
 
Function GetNewFileName() As String  
GetNewFileName = "": InitialFileName = "c:\": NewFileExt = ".xls"  
GetNewFileName = Application.GetSaveAsFilename(InitialFileName, _  
"Excel File (*" & NewFileExt & "),", , _  
"Type the file name", "Save the file")  
If VarType(GetNewFileName) = vbBoolean Then GetNewFileName = "": Exit Function  
If GetNewFileName = "False" Or GetNewFileName = "False" Then GetNewFileName = ""  
End Function  
__________________________________________  
 
Что к нему дописать нужно, чтобы имена не копировались?  
 
 
 
___________________  
59895
Длинная формула в макросе
 
Последнее сообщение игнорируем. Ошибка крылась в личной невнимательности.
Длинная формула в макросе
 
Вот кстати странно. В том файле что вы мне прислали работает норм.  
Копирую формулу в свой файл, меняю нужные значения (номера строк и столбцов, Названия листов) и опять сумирует в ноль...
Длинная формула в макросе
 
{quote}{login=sva}{date=28.11.2011 02:48}{thema=}{post}Формула.{/post}{/quote}  
 
Спасибо, работает. В предыдущей формуле просто скобок не хватало)
Длинная формула в макросе
 
Забыл файл
Длинная формула в макросе
 
{quote}{login=sva}{date=23.11.2011 09:31}{thema=}{post}Файл покажите, думаю формулу можно сократить.  
Навскидку можно такой формулой воспользоваться  
=СУММПРОИЗВ(--(ЕЧИСЛО(ПОИСК({"italy";"spain";"greece"};диапазон где ищем)))*диапазон суммирования)/100{/post}{/quote}  
 
Не работает у меня данная формула. Итоговую сумму как 0 показывает.    
Можете привести формулу для выделеных ячеек в прикрепленном файле?  
 
Excel 2003, English
Импорт документа без лишних вопросов
 
Проблема найдена.  
 
При первом импорте этого документа оно и грузит все имена. Соответсвенно забивается памятью И действительно этих имен тут на 6 мб О_О  
 
Осталось только поставить запрет на сохранение...
Импорт документа без лишних вопросов
 
{quote}{login=Hugo}{date=25.11.2011 07:10}{thema=}{post}Это правильное решение.  
Я таким файлам, которые используются как шаблоны и которые нежелательно перезаписывать/сохранять, обычно после изготовления ставлю атрибут "Read Only".  
Это защищает шаблон от случайного повреждения.{/post}{/quote}  
 
Нубский вопрос, но "как"?)  
Уже совсем замаялся с этим документом. Таблицы большие, все формулы заново в макросах прописывать приходится... Форматировать сначала...
Импорт документа без лишних вопросов
 
{quote}{login=Hugo}{date=25.11.2011 06:51}{thema=}{post}Тогда действительно существующие имена нужно заменять на копированные.  
Но если файл закрывается без сохранения - тогда и мусора и лишних имён там быть не должно...{/post}{/quote}  
 
Сейчас попробую создать файл заново... может я что-то перемудрил был...
Импорт документа без лишних вопросов
 
Хотя насчет веса это действительно странно. У меня есть другие файлы, которые работают с теми же книгами, с такими же макросами (только другие листы импортирует) и их вес не превышает 200кб...
Импорт документа без лишних вопросов
 
{quote}{login=Hugo}{date=25.11.2011 06:07}{thema=}{post}Интересное соседство вопросов:  
 
"А если я поудаляю эти имена (с формулами)что может произойти? Я имею ввиду, не утрачу ли информацию?"  
 
"-думаю тут её применять не стоит, пока не разобрались с конфликтом имён.-    
А можно поинетересоваться как эта строка выглядит?"  
 
Т.е. Вы справедливо боитесь потерять информацию, и тут же готовы её потерять (а может быть уже что-то потеряли, когда отвечали YES).  
Хотя конечно если Вы точно знаете, что в той книге, куда Вы копируете лист, нужных имён нет, то можете применять  
 
Application.DisplayAlerts = False  
'копирование  
Application.DisplayAlerts = True  
 
Но судя по весу, Вы так уже набрали приличное количество мусора.  
Я бы сделал иначе - перед копированием кодом (пример выше чуть переделать) удалил все ненужные имена из книги (остатки от предыдущего копирования), потом смело копировал лист со всеми именами.{/post}{/quote}  
 
Спасибо за ответ.  
Дело в том, что сам по себе мусор мне не мешает. Данынй файл - это рабочий файл, который просто собирает информацию в таблицу, потом жта таблица отдельно экспортируется в отдельный документ, а сам рабочий файл закрывается без сохранения.
Импорт документа без лишних вопросов
 
{quote}{login=Hugo}{date=25.11.2011 03:16}{thema=}{post}Вообще-то есть строка, отключающая лишние вопросы - но думаю тут её применять не стоит, пока не разобрались с конфликтом имён.{/post}{/quote}  
 
А можно поинетересоваться как эта строка выглядит?
Импорт документа без лишних вопросов
 
Hugo,  
 
А если я поудаляю эти имена (с формулами)что может произойти? Я имею ввиду, не утрачу ли информацию?
Импорт документа без лишних вопросов
 
{quote}{login=Hugo}{date=25.11.2011 03:06}{thema=}{post}Это имя - не имя листа, а имя в листе.  
Если Вы их не используете, то поудаляйте все лишние имена менеджером имён.  
А английский на минимальном уровне всёж нужно понимать...{/post}{/quote}  
Ну английским владею слава Богу нормально. Но не суть.  
 
Прикрепить файл не могу, так как практически чистый файл весит 6 с половиной мб а в архиве - полтора.  
 
Дело в том, что в моем файле нету даже похожих строк/имен/названий...
Импорт документа без лишних вопросов
 
{quote}{login=Hugo}{date=25.11.2011 02:53}{thema=}{post}Там ведь всё ясно написано - импортируете лист с именем, которое у Вас уже есть.  
Я бы На Вашем месте заранее изменил своё имя на другое, раз уж такой конфликт часто бывает - тут если выбрать YES, то может быть ошибка.  
Или выбирал NO и менял имя.{/post}{/quote}  
 
Так ведь дело вот в чем:  
 
В файле в кторый я ипортирую информацию есть только 2 листа:  
Data Management (просто лист с кнопками управления импорт/экспорт/рефреш)  
HC Report (Лист с шаблоном в который собирается информация с импортированых листов)  
 
А импортирую я из другого документа только один лист с названием Lux EUR  
 
Я вообще не могу понять насчет чего оно мне пишет... С другими документами все работает нормально.
Страницы: 1 2 След.
Наверх