Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 13:18 31.10.25 
Компютри и Интернет
   >> Електронни таблици
*Кратък преглед

Тема обединяване на файловенови  
Автор ax4o (непознат )
Публикувано25.06.08 10:53



Здраейте, имам нужда от следната помощ
в папка 042008 имам към 20 екселски файла, в всеки от които им апо 2 шиита с точни имена едната се казва А а другата Б, искам да обединя информацията в нов файл, които също да съдържа шеет А и шеет Б, като шеет А е директно копиране на всичките 20 файла каквото те съдържат в шеет А, и съответното за шеет Б - що за макрос трябва да ползвам?
Благодаря предварително за помощта

Редактирано от ax4o на 25.06.08 11:10.



Тема Re: обединяване на файловенови [re: ax4o]  
Автор Бypaн (ентусиаст)
Публикувано25.06.08 15:59



По-долу е процедурата. Само там където имаш

firstWS = "A"
secondWS = "B"

замени A и B с имената на двата листа, които искаш да копираш

' Кодът започва тук

Sub CopyFilesInDir()

Set objShell = CreateObject("Shell.Application")

Set objFolder = objShell.BrowseForFolder(0, "Select Folder", 0, 0)

If (Not objFolder Is Nothing) Then
On Error Resume Next
If IsError(objFolder.Items.Item.Path) Then MyDir = _
CStr(objFolder): GoTo Here
On Error GoTo 0

If Len(objFolder.Items.Item.Path) > 3 Then
MyDir = objFolder.Items.Item.Path & _
Application.PathSeparator
Else
MyDir = objFolder.Items.Item.Path
End If
Else: Application.ScreenUpdating = True: End
End If
Here:
Set objFolder = Nothing: Set objShell = Nothing


firstWS = "A"
secondWS = "B"

Set MyNewFile = Workbooks.Add



Set MyWS = MyNewFile.Worksheets.Add
MyWS.Name = secondWS

Set MyWS = MyNewFile.Worksheets.Add
MyWS.Name = firstWS


MyFileName = Dir(MyDir, 7)



Do While MyFileName <> ""
MyFile = MyDir & MyFileName

Set wb = Workbooks.Open(MyFile)

a = True
B = True




On Error Resume Next

wb.Worksheets(firstWS).Activate

If Err <> 0 Then
a = False
MsgBox ("В този файл няма лист " & firstWS & ". Затварям файла без копиране.")
wb.Close
End If

If a Then
wb.Worksheets(secondWS).Activate
If Err <> 0 Then
B = False
MsgBox ("В този файл няма лист " & secondWS & "Затварям файла без копиране.")
wb.Close
End If

On Error GoTo 0

If a And B Then
Application.ScreenUpdating = False
LastRow = wb.Worksheets(firstWS).Range("A65536").End(xlUp).Row
LastRow1 = MyNewFile.Worksheets(firstWS).Range("A65536").End(xlUp).Row
If LastRow1 > 1 Then LastRow1 = LastRow1 + 1

MyRange = "1:" & LastRow

wb.Worksheets(firstWS).Rows(MyRange).Copy

MyNewFile.Worksheets(firstWS).Rows(LastRow1).PasteSpecial


LastRow = wb.Worksheets(secondWS).Range("A65536").End(xlUp).Row
LastRow1 = MyNewFile.Worksheets(secondWS).Range("A65536").End(xlUp).Row
If LastRow1 > 1 Then LastRow1 = LastRow1 + 1

MyRange = "1:" & LastRow



wb.Worksheets(secondWS).Rows(MyRange).Copy

MyNewFile.Worksheets(secondWS).Rows(LastRow1).PasteSpecial

Application.ScreenUpdating = True

wb.Close


End If
End If


MyFileName = Dir()



Loop

Worksheets(secondWS).Activate
Cells(1, 1).Activate

Worksheets(firstWS).Activate
Cells(1, 1).Activate

Do
fName = Application.GetSaveAsFilename
Loop Until fName <> False

If Right(fName, 4) <> ".xls" Then fName = fName & ".xls"
MyNewFile.SaveAs Filename:=fName

End Sub

' Кодът свършва тук



Тема Re: обединяване на файловенови [re: ax4o]  
Автор f(x) ()
Публикувано25.06.08 21:22



справи ли се ако не изпрати ми файловете кажи какво къде искаш да копираш и ще ти напиша макросче. Правил съм го но малко по различно , дори в единия шийт ще ти направя и списък на файлчета.
Пиши тук и ще ти дам моя адрес



Тема Re: обединяване на файловенови [re: Бypaн]  
Автор ax4o (непознат )
Публикувано26.06.08 11:52



Благодаря за бързия отговор и работещо решение, сега само требе да махна първият ред от всеки лист и е готово.

Човърках се, но намерих само два примера за изтриване на празните редове в този клуб, но нито един не ми върши работа тъй като трябва да правя проверка ако стойността в колона г(2-последният писан ред)=0 или няма стойност от лист Б да не ги копира в новосъздаденият лист Б

Още венъж Благодаря боби. Имаш интересен блог

Редактирано от ax4o на 26.06.08 11:54.



Тема Re: обединяване на файловенови [re: ax4o]  
Автор Бypaн (ентусиаст)
Публикувано26.06.08 12:05



Ако правилно съм те разбрал, имаш антетка в първия ред на всеки лист, така ли?
всъщност не съобразих, ама и ти не беше казал... :-) ако е това пипни кода, който ти пуснах.
Редовете

MyRange = "1:" & LastRow

Трябва да станат

MyRange = "2:" & LastRow

Така няма да копира първия ред от всеки лист


Другото за проверката не го разбрах нещо... Трябва ако колона G в последния ред е 0 или празно, да не копира нищо от този лист, така ли? А с лист а какво става в този случай?
освен това, ако е ясно коя е последната колона ( примерно трябва да се копират само колони от A до G, може да се поправи, за да не копира целия ред) ще работи по-бързо, а и няма да те пита за clipboarda

Редактирано от Бypaн на 26.06.08 12:11.



Тема Re: обединяване на файловенови [re: Бypaн]  
Автор ax4o (непознат)
Публикувано26.06.08 12:28



Ами и в А лист сами излишни празните стойности но там са 4 колони в които в която и от тях да има запис различен от 0 или нищо трябва да остават. Но мога да променя ако в колона Е няма запис да се изтрива
лист А се попълват колони от А до Й (джей), а в лист Б колони от А до Г.
Сетих се за MyRange = "2:" & LastRow - работи.



Тема Re: обединяване на файловенови [re: ax4o]  
Автор Бypaн (ентусиаст)
Публикувано26.06.08 13:43



Сложи този код:

MyNewFile.Activate

i = 1
Do

If Worksheets(firstWS).Cells(i, 5).Value = "" Or _
Worksheets(firstWS).Cells(i, 5).Value = 0 Then
Worksheets(firstWS).Rows(i).Delete
LastRow = Worksheets(firstWS).Range("A65536").End(xlUp).Row
Else
i = i + 1
End If

Loop Until i > LastRow



i = 1
Do

If Worksheets(secondWS).Cells(i, 7).Value = "" Or _
Worksheets(secondWS).Cells(i, 7).Value = 0 Then
Worksheets(secondWS).Rows(i).Delete
LastRow = Worksheets(secondWS).Range("A65536").End(xlUp).Row
Else
i = i + 1
End If

Loop Until i > LastRow


След реда Loop - имам предвид този Loop който е непосредствено след MyFileName = Dir()
След като всичко е копирано прави проверка в лист а и лист Б на новия файл и итрива редовете в лист А, за които стойността в колона Е e нула или нищо, както и в лист B, там където в колона G e нула или нищо
Надявам се че няма проблем с кода, но ако има нещо - кажи



Тема Re: обединяване на файловенови [re: Бypaн]  
Автор ax4o (непознат)
Публикувано26.06.08 15:17



Благодаря работи перфектно!



Тема Re: обединяване на файлове [re: Бypaн]  
Автор lRlKO (непознат )
Публикувано20.08.08 16:53



И аз имам подобен случай за обединяване.Всяка таблица има два шийта, само че са наименувани различно, а на първата трябва да пише чл.3, на втората чл.3а.Трябва и да се вмъкнат три колони отпред и да се запише в тях съдържанието на F4,F6 и B6.




*Кратък преглед
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2025 Dir.bg Всички права запазени.