• DİKKAT

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

Farklı kaydette dosya adı problemi

Katılım
25 Temmuz 2012
Mesajlar
40
Excel Vers. ve Dili
OFFICE 2016 - TR
Merhaba,

Aşağıdaki makroyu kaydettim.

Excel dosyamda 4 farklı sekme var. Her sekmeyi ayrı ayrı PDF olarak kaydediyorum.

Mavi ile işaretlediğim dosya ismi değişken(Her ayrı ihracatta farklı isim ve tarih vererek farklı kaydetle dosyayı çoğaltıyorum)

Derdim bu çoğaltma sonrasında makronun vereceği dosya isminin dinamik olması. Yani mavi kısmın mevcut excel çalışma kitabının ismini alması.

Teşekkürler,


Sub PLAY()
'
' PLAY Makro
' PDF'YE DÖNÜŞTÜRÜR VE YAZDIRIR...
'

'
ActiveWorkbook.Save
ChDir "\\Marketing_pc\gunduzkurk\2012\EXPORT\INVOICE - PACKING LIST"
Sheets("MÜŞTERİ FATURA").Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"\\Marketing_pc\gunduzkurk\2012\EXPORT\INVOICE - PACKING LIST\COLOMER-08.08.USD"&"-INV.pdf" _
, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=True
Sheets("GENEL FATURA").Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"\\Marketing_pc\gunduzkurk\2012\EXPORT\INVOICE - PACKING LIST\COLOMER-08.08.USD"&"-INVG.pdf" _
, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=True
Sheets("PACKING LIST").Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"\\Marketing_pc\gunduzkurk\2012\EXPORT\INVOICE - PACKING LIST\COLOMER-08.08.USD"&"-PL.pdf" _
, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=True
Sheets("K.TALİMATI").Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"\\Marketing_pc\gunduzkurk\2012\EXPORT\INVOICE - PACKING LIST\COLOMER-08.08.USD"&"-KT.pdf" _
, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=True

End Sub
 
Son düzenleme:
Sayın m_koken,
kodlarda o ekler zaten var ama şu şekilde yapabilirsiniz :

"dosya ismi" & "INVG" & ".pdf"
 
Teşekkürler hocam, tam anlatamadım ben,

Hep farklı sevkiyatlarda kullanacağım için dosya isimleri hep farklı. Benim istediğim her yeni sevkiyatta makroyu değiştirmek zorunda kalmamak.

Bunun için aşağıdaki kod yerine dinamik olarak değişebilen, bulunduğu dosya ismini alıp ve sonuna -INV, -PL ve -KT koyan bir kod lazım.

Sheets("GENEL FATURA").Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"\\Marketing_pc\gunduzkurk\2012\EXPORT\INVOICE - PACKING LIST\COLOMER-08.08.USD-INVG.pdf" _
, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=True
 
Sayın m_koken,
Ben de bu şekilde demiştim zaten.Şu şekilde deneyin:

"\\Marketing_pc\gunduzkurk\2012\EXPORT\INVOICE - PACKING LIST\COLOMER-08.08.USD" & "-INVG.pdf"

Eğer COLOMER-08.08.USD değişkense bunu bir değişkene atamalısınız mesela

"\\Marketing_pc\gunduzkurk\2012\EXPORT\INVOICE - PACKING LIST\isim" & "-INVG.pdf"

Buradaki "isim" dosyanızın ismini atadığınız değişken olacak.
 
Sayın Bedersu,

Benim istediğimde bunun benim manuel olarak yapmam değil, makronun kendisi yapması. Mevcut excel çalışma kitabının ismi ne ise sizin "isim" yazdığınız yere otomatik olarak atması. Aksi takdirde ben manuel dosya ismini oraya girdikten sonra işimi kolaylaştırmak yerine; makro işimi zorlaştıracaktır.

Yada ben sizin yazdığınızı tam olarak anlayamadım, siz otomatik atması için bir yol gösteriyorsunuz ama ben konuya hakim olmadığım için anlamıyorum? Eğer böyle ise biraz daha nereye ne kodu ekleyeceğimi biraz daha açık yazabilir misiniz?

Saygılar
 
Mesela şöyle bir kod var mı?
ThisWorkbook.name vs.

Birkaç yerde gördüm ama entegre edemedim.
 
Bu kod işinizi görürmü

Kod:
Sub PLAY()
ActiveWorkbook.Save
dosya = "[URL="file://\\Marketing_pc\gunduzkurk\2012\EXPORT\INVOICE"]\\Marketing_pc\gunduzkurk\2012\EXPORT\INVOICE[/URL] - PACKING LIST\COLOMER-08.08.USD-"
'dosya = "E:\"
ek1 = "INV.pdf"
ek2 = "INVG.pdf"
ek3 = "PL.pdf"
ek4 = "KT.pdf"
mesaj = Application.InputBox("1 ile 4 saysı arası rakam giriniz.", "Sayı girin", "1", 400, 30, , Type:=1)
   
If mesaj = False Then
MsgBox "İşlemi iptal ettiniz"
Exit Sub
End If
If mesaj = 1 Then
ekle = ek1
Sheets("MÜŞTERİ FATURA").Select
ElseIf mesaj = 2 Then
ekle = ek2
Sheets("GENEL FATURA").Select
ElseIf mesaj = 3 Then
ekle = ek3
Sheets("PACKING LIST").Select
ElseIf mesaj = 4 Then
ekle = ek4
Sheets("K.TALİMATI").Select
Else
MsgBox "bu sıranolu kad kayıtlı değil"
End If
MsgBox dosya & ekle
ActiveSheet.Range("A1:h20").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
dosya & ekle, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
Sheets("GENEL FATURA").Select
Range("H3").Select
MsgBox "işlem tamam"
End Sub

not :bu kodun çalışması için ofis 2007 ve üzeri versiyon olması ve aşağıdaki linkdeki 1 nolu mesajdaki linkdeki dosya yüklü olmalı

http://www.excel.web.tr/f48/pdf-kaydetme-yeri-secme-t89545.html
 
Halit Bey merhaba,

Teşekkürler cevabınız için ama maalesef olmadı. Çok güzel komplex bir kod yazmışsınız elinize sağlık, ama benim tek ihtiyacım mevcut kodlara bir komut ekleyerek mevcut excel çalışma kitabının ismi ne ise çıkan PDF dosyasına o ismi vermesi. Mesela şuan COLOMER... yazıyor ama o isim ve sonrasındaki tarih hep değişiyor.

Saygılarımla
 
Halit Bey merhaba,

Teşekkürler cevabınız için ama maalesef olmadı. Çok güzel komplex bir kod yazmışsınız elinize sağlık, ama benim tek ihtiyacım mevcut kodlara bir komut ekleyerek mevcut excel çalışma kitabının ismi ne ise çıkan PDF dosyasına o ismi vermesi. Mesela şuan COLOMER... yazıyor ama o isim ve sonrasındaki tarih hep değişiyor.

Saygılarımla

Çalışma kitabının adı yani (dosyanın adı) COLOMER olduğunu varsayalım siz pdf dosyasını COLOMER.pdf olarakmı kayıt yapmak istiyorsunuz anlıyamadım buraya açıklık getirin.
 
Çalışma kitabının adı yani (dosyanın adı) COLOMER olduğunu varsayalım siz pdf dosyasını COLOMER.pdf olarakmı kayıt yapmak istiyorsunuz anlıyamadım buraya açıklık getirin.

Evet bu isim değişken. Mevcut çalışma kitabı ismi ne ise o isimle kayıt yapmasını istiyorum. Yani;

1. sheet için xxx-INV.pdf
2. sheet için xxx-INVG.pdf
3. sheet için xxx-PL.pdf
4. sheet için xxx-KT.pdf

Buradaki xxx değişken (Çalışma kitabı neyse o)

Hatta mümkünse çalışma kitabının ismi ile beraber dosya yolu da dinamik olarak ayarlanabilirse süper olur. Mesela her yeni ihracatta ben bir çalışma sayfası üzerinden farklı kaydet diyip yeni çalışma sayfasına yeni isim vererek gidiyorum. Onun için kodlarında ona göre dinamik olması gerekiyor.

Modifiye etmek istediğim kod aşağıdaki.

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"\\Marketing_pc\gunduzkurk\2012\EXPORT\INVOICE - PACKING LIST\COLOMER-08.08.USD"&"-INV.pdf" _
, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=True

Saygılar
 
Son düzenleme:
Sayın m_koken,
Verdiğim cevapta isim yerine ThisWorkbook.name yazın.
 
Hata benden kaynaklandı sayın m_koken özür dilerim.Şu şekilde dener misiniz?

Kod:
"\\Marketing_pc\gunduzkurk\2012\EXPORT\INVOICE - PACKING LIST\" & isim & "-INVG.pdf"
 
Sayın Bedersu, rica ederim ne özürü.

İşte tam da bu istediğim, ellerine sağlık, gayet güzel çözüldü. Peki bir üst seviyeye geçersek dosya yolu değişmesine önlem olarak ThisWorkbook.path gibi bir komutla dosya yolunu da dinamik hale getirebilir miyiz?

Birde dosya ismi şu şekilde çıktı;

ÖN ÇALIŞMA.USD.xlsm-INV

Aşağıdaki koda ne eklersen .xlsm kısmını silebilirim. İstediğim isim: ÖN ÇALIŞMA.USD-INV

Kod: "\\Marketing_pc\gunduzkurk\2012\EXPORT\INVOICE - PACKING LIST\" & ThisWorkbook.Name & "-INV.pdf"
 
Sayım m_koken,
Eğer tüm dosya uzantılarınız xlsm ise
thisworkbook.name yazan yeri aşağıdaki gibi değiştirin.

Kod:
kisim = (Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 5))

"\\Marketing_pc\gunduzkurk\2012\EXPORT\INVOICE - PACKING LIST\" & kisim & "-INV.pdf"
 
Yada dosya adını böyle alabilirsiniz.

Kod:
Dosya = ThisWorkbook.Name
isim = (Mid(Dosya, 1, Len(Dosya) - InStr(1, StrReverse(Dosya), ".", vbTextCompare)))
 
Arkadaşlar size sonsuz teşekkürlerimi iletiyorum ilginiz için.


Saygılar
 
Geri
Üst