Makro içeren bir excel sayfasını, makro içermeyen bir excel sayfası olarak dışarı aktrarmak

Gold_Savt

Altın Üye
Katılım
5 Mart 2010
Mesajlar
227
Excel Vers. ve Dili
Ofis 2010 TR 32 Bit
Altın Üyelik Bitiş Tarihi
01-02-2025
Makro içeren bir excel sayfam var. Bunu dışarı aktarırken yine makro içeren bir excel sayfası olarak aktarmak istemiyorum.
Aktardığım sayfada da makrolarım olduğundan dolayı makrosuz temiz bir çıktı istiyorum.
Benim kullandığım kodlar şu şekilde:
Kod:
ActiveWorkbook.SaveAs Filename:=CreateObject("WScript.Shell").SpecialFolders("Desktop") & " " & DateTime.Minute(simdi) & " " & DateTime.Second(simdi) & "Çıktı", FileFormat:=xlOpenXMLWorkbookMacroEnabled
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,798
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
Sayfa için kod
CSS:
Sub kayityap()

Klasor = CreateObject("wscript.Shell").SpecialFolders.Item("Desktop")
dosya_adi = "deneme15"

dosya = ThisWorkbook.FullName
uzanti = ".xlsx"
Sayfa_Adı = ActiveSheet.Name
ActiveSheet.Copy


For Each ModX In ActiveWorkbook.VBProject.VBComponents
Set VBComp = ActiveWorkbook.VBProject.VBComponents(ModX.Name)
If ModX.Type = 100 Then
VBComp.CodeModule.DeleteLines 1, VBComp.CodeModule.CountOfLines
Else
ActiveWorkbook.VBProject.VBComponents.Remove VBComp
End If
Next

ActiveSheet.DrawingObjects.Delete

ActiveSheet.DrawingObjects.Delete
ActiveWorkbook.SaveAs Klasor & "\" & dosya_adi & uzanti, FileFormat:=51  '52 -4143
ActiveWorkbook.Close SaveChanges:=False

End Sub
 

Gold_Savt

Altın Üye
Katılım
5 Mart 2010
Mesajlar
227
Excel Vers. ve Dili
Ofis 2010 TR 32 Bit
Altın Üyelik Bitiş Tarihi
01-02-2025
Ekli resimde gösterdiğim gibi uyarı veriyor hocam.
 

Ekli dosyalar

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,798
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
Biyokrafinizde ofis 2007 kullandığınız yazıyor kodlar buna göre düzenlendi
Bu kod bu hatayı vermemesi lazım
yazdığım kodu içinde barındıran hata aldığınız dosyayı ekleyin bir bakalım.
 

Gold_Savt

Altın Üye
Katılım
5 Mart 2010
Mesajlar
227
Excel Vers. ve Dili
Ofis 2010 TR 32 Bit
Altın Üyelik Bitiş Tarihi
01-02-2025
Ofis 2010 kullanıyorum. Burada güncellemeyi unutmuşum.
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,798
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
örnek dosyanızı eklermisiniz.
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,798
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
Yukarıdaki mesajımda bahsetmiştim kod ofis 2007 ve üzeri için yazılmıştır.
eklediğiniz dosyanın uzantısı xls yani ofis 2007 den aşağıdaki sürümler için kullanılır. ofis 2007 ve üzeri için xlsm makro içerir xlsx makro içermez.
bu doğrultuda kod xls içn böyle olmalı.
kırmızı yerlere dikkat ediniz.

Rich (BB code):
Sub kayityap()

Klasor = CreateObject("wscript.Shell").SpecialFolders.Item("Desktop")
dosya_adi = "deneme15"

dosya = ThisWorkbook.FullName
uzanti = ".xls"
Sayfa_Adı = ActiveSheet.Name
ActiveSheet.Copy


For Each ModX In ActiveWorkbook.VBProject.VBComponents
Set VBComp = ActiveWorkbook.VBProject.VBComponents(ModX.Name)
If ModX.Type = 100 Then
VBComp.CodeModule.DeleteLines 1, VBComp.CodeModule.CountOfLines
Else
ActiveWorkbook.VBProject.VBComponents.Remove VBComp
End If
Next

ActiveSheet.DrawingObjects.Delete

ActiveSheet.DrawingObjects.Delete
ActiveWorkbook.SaveAs Klasor & "\" & dosya_adi & uzanti, FileFormat:=-4143
ActiveWorkbook.Close SaveChanges:=False

End Sub
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,245
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Alternatif;

Kendinize uyarlarsınız.

C++:
Option Explicit

Sub Test()
    Dim File_Path As String
   
    File_Path = CreateObject("WScript.Shell").SpecialFolders("Desktop") & Application.PathSeparator
    ActiveSheet.Copy
    Application.DisplayAlerts = False
    ActiveWorkbook.SaveAs Filename:=File_Path & Format(Now, "nn ss") & " Çıktı.xlsx", FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
    Application.DisplayAlerts = True
End Sub
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,798
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
Bu kod bütün sürümlerde çalışır.
Kod:
Sub kayityap()

Dim fL As Object
Set fL = CreateObject("Scripting.FileSystemObject")

uzanti = fL.GetExtensionName(ThisWorkbook.FullName)

If uzanti = "xls" Then
FileFormatNum = -4143
ElseIf uzanti = "xlsm" Then
FileFormatNum = 52
ElseIf uzanti = "xlsx" Then
FileFormatNum = 51
ElseIf uzanti = "xlsb" Then
FileFormatNum = 50
Else
FileFormatNum = 56
End If

Klasor = CreateObject("wscript.Shell").SpecialFolders.Item("Desktop")
dosya_adi = "deneme15"

dosya = ThisWorkbook.FullName
Sayfa_Adı = ActiveSheet.Name
ActiveSheet.Copy

For Each ModX In ActiveWorkbook.VBProject.VBComponents
Set VBComp = ActiveWorkbook.VBProject.VBComponents(ModX.Name)
If ModX.Type = 100 Then
VBComp.CodeModule.DeleteLines 1, VBComp.CodeModule.CountOfLines
Else
ActiveWorkbook.VBProject.VBComponents.Remove VBComp
End If
Next

ActiveSheet.DrawingObjects.Delete
ActiveWorkbook.SaveAs Klasor & "\" & dosya_adi & "." & uzanti, FileFormat:=FileFormatNum
ActiveWorkbook.Close SaveChanges:=False

End Sub
 

Gold_Savt

Altın Üye
Katılım
5 Mart 2010
Mesajlar
227
Excel Vers. ve Dili
Ofis 2010 TR 32 Bit
Altın Üyelik Bitiş Tarihi
01-02-2025
Alternatif;

Kendinize uyarlarsınız.

C++:
Option Explicit

Sub Test()
    Dim File_Path As String
   
    File_Path = CreateObject("WScript.Shell").SpecialFolders("Desktop") & Application.PathSeparator
   
    Application.DisplayAlerts = False
    ActiveWorkbook.SaveAs Filename:=File_Path & Format(Now, "nn ss") & " Çıktı.xlsx", FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
    Application.DisplayAlerts = True
End Sub
Sayın Korhan Bey; Sadece Aktif çalışma sayfasını aktarsa kafi gelecek hocam. Verdiğiniz kodda tüm sayfalar aktarılıyor.
Sayın Halit Bey, Kodlarınızı ben çalıştıramadım. Dediğiniz gibi sürüm uyuşmazlığı olmalı.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,245
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Sizin kullandığınız kod satırından yola çıkarak cevap vermiştim. Önerdiğim koda küçük bir ekleme yaptım. Tekrar deneyiniz.
 

Gold_Savt

Altın Üye
Katılım
5 Mart 2010
Mesajlar
227
Excel Vers. ve Dili
Ofis 2010 TR 32 Bit
Altın Üyelik Bitiş Tarihi
01-02-2025
Teşekkürler Korhan Bey. Sağlıklı çalışıyor.
Kopyalama sırasında sadece .value değerlerini kopyalama imkanı var mı? Şu haliyle de güzel ancak .formula değerler olunca ilerde bozulma durumu olabilir. Tekrar teşekkürler

Düzeltme Notu: Aşağıdaki kod ile hallettim.
Kod:
Range("ilgili hücreler") = Range("ilgili hücreler").Value
 
Son düzenleme:

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,245
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Bu taleplerinizi ilk mesajınızda belirtirseniz konunuzla ilgilenenlerin vakitlerini çalmamış olursunuz.
 

Gold_Savt

Altın Üye
Katılım
5 Mart 2010
Mesajlar
227
Excel Vers. ve Dili
Ofis 2010 TR 32 Bit
Altın Üyelik Bitiş Tarihi
01-02-2025
Plansızlıktan kaynaklanıyor. Bir işi bitiriyorsunuz, diğeri çıkıyor.
 
Üst