• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

thisworkbook.path ve .xlt

  • Konbuyu başlatan Konbuyu başlatan peleryn
  • Başlangıç tarihi Başlangıç tarihi
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?
 
dosyanın içinde iken

msgbox thisworkbook.path

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

Kod:
ActiveWorkbook.SaveAs "C:\Dosyalar\dosya1.xls"

Kod:
yol = "C:\Dosyalar\"
isim = "dosya1"

ActiveWorkbook.SaveAs yol & isim & ".xls"
 
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.
 
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.
 
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.
 
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

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?

.
 
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.
 
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.

.
 
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.
 
Ş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.

.
 
Ş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.
 
Geri
Üst