thisworkbook.path ve .xlt

Katılım
10 Mayıs 2009
Mesajlar
1,080
Excel Vers. ve Dili
2003 türkçe
Merhabalar;

.xlt uzantılı şablondan farklı kaydet makrosuyla yeni dosyalar üretiyorum ve şablonumun bulunduğu klasöre kaydetmesini istediğim için yolu tanımlarken Thisworkbook.Path komutunu kullanıyorum ama yeni dosya şablonun bulunduğu klasöre değil C:\ sürücüsüne kaydoluyor.Bunu düzeltebilmem için bir öneriniz olur mu?
 

mancubus

Destek Ekibi
Destek Ekibi
Katılım
6 Ocak 2010
Mesajlar
2,224
Excel Vers. ve Dili
İŞ: 2021 Win Eng
dosyanın içinde iken

msgbox thisworkbook.path

diyerek görüntülediğinizde doğru yolu veriyor mu?
 

mancubus

Destek Ekibi
Destek Ekibi
Katılım
6 Ocak 2010
Mesajlar
2,224
Excel Vers. ve Dili
İŞ: 2021 Win Eng
veya..

Kod:
ActiveWorkbook.SaveAs "C:\Dosyalar\dosya1.xls"
Kod:
yol = "C:\Dosyalar\"
isim = "dosya1"

ActiveWorkbook.SaveAs yol & isim & ".xls"
 
Katılım
10 Mayıs 2009
Mesajlar
1,080
Excel Vers. ve Dili
2003 türkçe
veya..

Kod:
ActiveWorkbook.SaveAs "C:\Dosyalar\dosya1.xls"
Kod:
yol = "C:\Dosyalar\"
isim = "dosya1"

ActiveWorkbook.SaveAs yol & isim & ".xls"
Sn mancubus merhaba;

msgbox la thisworkbook path yolunu aldığımda C: olarak veriyor yolu.Oysa aynı dosyayı .xls e çevirdiğimde içinde bulunduğu klasörün yolunu veriyor.İkinci mesajınızda belirttiğiniz gibi bir dosya yolu tanımlamak istemiyorum.çünkü çok farklı bilgisayarlarda kullanılacak bir dosya.yollar tutmayabilir ve hata verebilir.
 

usubaykan

Destek Ekibi
Destek Ekibi
Katılım
16 Mayıs 2008
Mesajlar
561
Excel Vers. ve Dili
Ev : Office Excel 2003
İş : Office Excel 2003
Merhaba;

Kod:
Option Explicit
Sub DENEME()
Dim DOSYA As Variant
    Set DOSYA = CreateObject("Shell.Application").BrowseForFolder(0, "Dosya yolunu seçin !", &H500)
    If Not DOSYA Is Nothing Then
        MsgBox DOSYA.self.Path & "\"
    End If
End Sub
kodlarını kullanarak dosyanızın yolunu belirlemeniz mümkün.
 

mancubus

Destek Ekibi
Destek Ekibi
Katılım
6 Ocak 2010
Mesajlar
2,224
Excel Vers. ve Dili
İŞ: 2021 Win Eng
ben kodlar çalışırken hata mesajı dişında dialogbox belirmesinden, manuel işlem yapmaktan hoşlanmam. kodlar çalışsın, istediklerimi yapsın yeter.

tabii tarz meselesidir. bir başkası da her kod satırına mesaj koyar:
"satırlar seçilsin mi?
"seçim kopyalansın mı?
"hücre biçimlendirilsin mi?
vs vs...

her kullanıcıya seçenek verilecekse ya sn usubaykan ın önerdiği gibi browsefolder metodunu kullanacaksınız
(örnek: http://www.vbaexpress.com/kb/getarticle.php?kb_id=284 )
ya da inputbox
(örnek: http://www.mrexcel.com/forum/showthread.php?t=80689 )
(ikinci örnekte şablon yerine şablon gibi davranan normal excel dosyası kullanılmaktadır.)

benim bilmediğim/hatırlamadığım başka yöntemler de olabilir elbette.

tabii ben bu çalışamayı yapacak olsam tercihlerim farklı olurdu. böyle bir imkan tanımazdım.
 
Katılım
10 Mayıs 2009
Mesajlar
1,080
Excel Vers. ve Dili
2003 türkçe
Sn mancubus ;

Ben de aynen fazla duraklama yapmadan direk işi yapan bir makro olsun istiyorum.Değişik düzeyde kullanıcılar olacağından dosyayı .xlt şablon haline getirmem uygun oluyor.Daha önce diğer kod dizilimlerinde olduğu gibi kaydedilecek yeri açılan bir pencereden seçip dosyayı kaydediyorduk sorun yoktu.Ancak işleri daha akıcı hale getirmek için bulunduğu klasöre kaydetmesi şeklinde kodları değiştirdim.Bu değişiklikle örnek dosyada göreceğiniz sorun ortaya çıktı.

Aynı kodlardan oluşmasına rağmen
ANA DOSYA.xlt dosyası C: 'ye
ANA DOSYA.xls dosyası bulunduğu klasöre farklı kaydediyor.

.xlt uzantılı dosyayı farklı bilgisayarlarda farklı yol tanımlamaları yapmama gerek kalmadan kendi bulunduğu klasöre farklı kaydeder hale nasıl getirebilirim? Soru bu.Dün konuyu açarken malesef örnek dosya ekleyecek fırsatım yoktu.Şimdi örnekten daha net görebilirsiniz.

İlgilenecek herkese teşekkürler.
 

Ekli dosyalar

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
22,184
Excel Vers. ve Dili
Microsoft 365 Tr
Ofis 2016 Tr
Merhaba,

Kod:
Sub Kayıt()
 
Dim d() As String
Dim dosya As String, dosyaAdı As String, uzantı As String
 
With ActiveWorkbook
    d = Split(.Name, ".")
    uzantı = "xlt"
    dosyaAdı = Left(.Name, Len(.Name) - Len(uzantı) - 1)
 
    dosya = dosyaAdı & "." & uzantı
    .SaveCopyAs Filename:=dosya
End With
 
End Sub
İstediğiniz bu mu?

.
 
Katılım
10 Mayıs 2009
Mesajlar
1,080
Excel Vers. ve Dili
2003 türkçe
Merhaba,

Kod:
Sub Kayıt()
 
Dim d() As String
Dim dosya As String, dosyaAdı As String, uzantı As String
 
With ActiveWorkbook
    d = Split(.Name, ".")
    uzantı = "xlt"
    dosyaAdı = Left(.Name, Len(.Name) - Len(uzantı) - 1)
 
    dosya = dosyaAdı & "." & uzantı
    .SaveCopyAs Filename:=dosya
End With
 
End Sub
İstediğiniz bu mu?

.
Ömer hocam afedersiniz tam olarak nasıl bir çözüm önerdiğinizi anlayamadım.Bir önceki mesajımda bir örnek dosya var.Onun üzerinde yardımcı olabilirseniz sevinirim.O dosyada butona bastığımızda dosya tüm makroları silinmiş şekilde kaydediliyor.Kaydedileceği yer ise aynı tanımlanmış olmasına rağmen üretici dosya .xlt olunca başka .xls olunca başka yere gidiyor.
 

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
22,184
Excel Vers. ve Dili
Microsoft 365 Tr
Ofis 2016 Tr
Merhabalar;

.xlt uzantılı şablondan farklı kaydet makrosuyla yeni dosyalar üretiyorum ve şablonumun bulunduğu klasöre kaydetmesini istediğim için yolu tanımlarken Thisworkbook.Path komutunu kullanıyorum ama yeni dosya şablonun bulunduğu klasöre değil C:\ sürücüsüne kaydoluyor.Bunu düzeltebilmem için bir öneriniz olur mu?
Klasördeki dosyayı aynı klasörün içinde xlt formatında kaydetme işlemini yaptım.

Sizin istediğiniz bu değilmiydi. Daha önceki açıklamalarınızda kodlar silincek yada farklı bir işlem yapılacak şeklinde bir metin göremedim.

.
 
Katılım
10 Mayıs 2009
Mesajlar
1,080
Excel Vers. ve Dili
2003 türkçe
Klasördeki dosyayı aynı klasörün içinde xlt formatında kaydetme işlemini yaptım.

Sizin istediğiniz bu değilmiydi. Daha önceki açıklamalarınızda kodlar silincek yada farklı bir işlem yapılacak şeklinde bir metin göremedim.

.
Hocam tekrar özetlersem konu şu:

.xlt uzantılı bir dosyam var ve bu dosya butona basılınca .xls uzantılı dosyalar üretiyor.(Bu üretim böyle olacak bunda bir sorun yok.Yani klasördeki xls ler xlt olsun istemiyorum)

ancak dosyayı üreteceği yolu ThisWorkbook.Path olarak belirtirsem .xlt uzantılı dosya ürettiği dosyayı bulunduğu klasöre değil C: ye üretiyor.Ben bulunduğu klasöre üretsin istiyorum.

Son olarak kodlar silinecek vs gibi bir durum yok.Ana dosyamda kodlar silinip dosya farklı kaydediliyor.Şimdi örnek dosyayada ekledim ki çözüme bunun bir etkisi varsa ilgilenecek kişiyi bir daha yormayayım diye.
 

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
22,184
Excel Vers. ve Dili
Microsoft 365 Tr
Ofis 2016 Tr
Şimdi anladım.

Bence bir yolu yok, nedenini açıklamaya çalışayım.

"ThisWorkbook.Path" henüz kayıt yapılmamış (boş olarak açılan yeni bir çalışmanın) dosyanın yolunu söylemez. Basit mantıkla, çünkü o dosyanın nereye kaydedileceği henüz belirsizdir

İşte bu nedenle de ".xlt" formatıyla açtığınız dosyanın yolu olmaz. Çünkü ".xlt" dosyası şablon dosya olduğu için yeni açılan dosya olarak işlem görür.

Bu nedenle dosyanızdaki kodla kayıt yapılırken "ThisWorkbook.Path" komutu bir yol bulamadığı için dosyayı "C" klasörünün içine kayıt ediyor.

.
 
Katılım
10 Mayıs 2009
Mesajlar
1,080
Excel Vers. ve Dili
2003 türkçe
Şimdi anladım.

Bence bir yolu yok, nedenini açıklamaya çalışayım.

"ThisWorkbook.Path" henüz kayıt yapılmamış (boş olarak açılan yeni bir çalışmanın) dosyanın yolunu söylemez. Basit mantıkla, çünkü o dosyanın nereye kaydedileceği henüz belirsizdir

İşte bu nedenle de ".xlt" formatıyla açtığınız dosyanın yolu olmaz. Çünkü ".xlt" dosyası şablon dosya olduğu için yeni açılan dosya olarak işlem görür.

Bu nedenle dosyanızdaki kodla kayıt yapılırken "ThisWorkbook.Path" komutu bir yol bulamadığı için dosyayı "C" klasörünün içine kayıt ediyor.

.
Gayet net açıkladınız hocam çok teşekkür ederim.
 
Üst