Excel'de döngülü makro

Katılım
9 Kasım 2010
Mesajlar
3
Excel Vers. ve Dili
2003
Arkadaşlar merhaba,

Excel'de makro ile ilgili bir sorum olacak. Basitçe anlatayım:
Bilgisayarımda masaüstünde bir klasör var. Bu klasörde toplam 5 tane Excel dosyası var. Her bir dosya birbirinin tamamen aynısı ve sadece isimleri farklı. İsimleri:

Excel - 1.xls
Excel - 2.xls
Excel - 3.xls
Excel - 4.xls
Excel - 5.xls

İstediğim şey şu: Öyle bir makro yazayım ki, her bir excel dosyasını teker teker açsın ve her bir excel dosyasının içerisinde bulunan A1 hücresine "Ali" yazsın ve kaydederek kapatsın.

Yardımlarınız için şimdiden teşekkürler.

Saygılar

Erkan
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,844
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
Arkadaşlar merhaba,

Excel'de makro ile ilgili bir sorum olacak. Basitçe anlatayım:
Bilgisayarımda masaüstünde bir klasör var. Bu klasörde toplam 5 tane Excel dosyası var. Her bir dosya birbirinin tamamen aynısı ve sadece isimleri farklı. İsimleri:

Excel - 1.xls
Excel - 2.xls
Excel - 3.xls
Excel - 4.xls
Excel - 5.xls

İstediğim şey şu: Öyle bir makro yazayım ki, her bir excel dosyasını teker teker açsın ve her bir excel dosyasının içerisinde bulunan A1 hücresine "Ali" yazsın ve kaydederek kapatsın.

Yardımlarınız için şimdiden teşekkürler.

Saygılar

Erkan
Seyfa ismini belirtmemişsiniz Sayfa ismini (Sayfa1) olarak varsıyımla aşağıdaki dosyaya bir bakarmısınız.
 

Ekli dosyalar

Katılım
9 Kasım 2010
Mesajlar
3
Excel Vers. ve Dili
2003
Çok teşekkür ederim ama istediğim tam olarak sizin yaptığınız değil. Sorumda bahsettiğim işlemi Excel'de "Record Macro" yöntemi ile aşağıdaki şekilde yaptım.

"Record Macro" yöntemi ile yazılan aşağıdaki Makro'yu daha kısa bir şekilde döngüyle nasıl yazabilirim? "Record Macro" yöntemi ile yazılan makrolar mecburen çok uzun oluyor ve işlem yapılacak Excel dosyası sayısı arttıkça zorlaşıyor.
Sonuçta her dosyada yapılacak işlem aynı. Dosyayı açıp, A1 hücresine "Ali" yazacak. Bu şekilde 100 tane Excel dosyasını açmak gerekir ise aşağıdaki şekilde bu makroyu yazmak epey zahmetli oluyor ve belli bir satırı geçtikten sonra ise Macro'yu bölmek gerekiyor.


Sub Macro()

Workbooks.Open Filename:= _
"C:\Documents and Settings\erkan_76\Desktop\Klasor\Excel-1.xls"
Range("A1").Select
ActiveCell.FormulaR1C1 = "Ali"
ActiveWorkbook.Save
ActiveWindow.Close



Workbooks.Open Filename:= _
"C:\Documents and Settings\erkan_76\Desktop\Klasor\Excel-2.xls"
ActiveCell.FormulaR1C1 = "Ali"
Range("A2").Select
ActiveWorkbook.Save
ActiveWindow.Close


Workbooks.Open Filename:= _
"C:\Documents and Settings\erkan_76\Desktop\Klasor\Excel-3.xls"
ActiveCell.FormulaR1C1 = "Ali"
Range("A2").Select
ActiveWorkbook.Save
ActiveWindow.Close


Workbooks.Open Filename:= _
"C:\Documents and Settings\erkan_76\Desktop\Klasor\Excel-4.xls"
ActiveCell.FormulaR1C1 = "Ali"
Range("A2").Select
ActiveWorkbook.Save
ActiveWindow.Close


Workbooks.Open Filename:= _
"C:\Documents and Settings\erkan_76\Desktop\Klasor\Excel-5.xls"
ActiveCell.FormulaR1C1 = "Ali"
Range("A2").Select
ActiveWorkbook.Save
ActiveWindow.Close

End Sub


Yani yukarıdaki makroyu aşağıdaki gibi sadeleştirebilir miyim? Bu sadeleştirmeyi döngü ile nasıl yapabilirim? Umarım anlatabilmişimdir.

Sub Macro()

Workbooks.Open Filename:= _
"C:\Documents and Settings\erkan_76\Desktop\Klasor\Excel-1.xls"
"C:\Documents and Settings\erkan_76\Desktop\Klasor\Excel-2.xls"
"C:\Documents and Settings\erkan_76\Desktop\Klasor\Excel-3.xls"
"C:\Documents and Settings\erkan_76\Desktop\Klasor\Excel-4.xls"
"C:\Documents and Settings\erkan_76\Desktop\Klasor\Excel-5.xls"

Range("A1").Select
ActiveCell.FormulaR1C1 = "Ali"
ActiveWorkbook.Save
ActiveWindow.Close


End Sub
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,844
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
yaptığınız işlemle benim yaptığım işlem aynı bir farkı var benim yazdığım kodda sadece hedef klasörü seçmeniz yeterli olacaktır.
 
Katılım
9 Kasım 2010
Mesajlar
3
Excel Vers. ve Dili
2003
Halit Bey,

Sizin yazdığınız makro çok profesyonelce yazılmış. Benim seviyemde birinin anlaması ve üzerinde revizeler yapması biraz zor. Benim yukarıda "Record Makro" yolu ile oluşturduğum makroyu döngü haline getirebilir misiniz rica etsem?

Teşekkürler

Erkan
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,844
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
bunu denermisiniz.

Sub aktar()
yer = "C:\Documents and Settings\erkan_76\Desktop\Klasor\"
For Each Dosya In CreateObject("Scripting.FileSystemObject").getfolder(yer).Files
If ThisWorkbook.Name <> Dosya.Name Then
Workbooks.Open Filename:=Dosya
Range("A1").Select
ActiveCell.FormulaR1C1 = "Ali"
ActiveWorkbook.Save
ActiveWindow.Close
End If
Next
End Sub
 
Üst