2016-04-01 15 views
0

Bir veri sayfasından geçen ve bir özet sayfasındaki tek bir hücrenin değerini değiştiren bir VBA komut dosyasını birlikte ekledim. Bu hücre bir dizi formül kullanıyor. Her yinelemeden sonra, ilgili hücre aralığı bir PDF olarak kaydedilir.Excel'de VBA komut dosyasında 'Farklı Kaydet' iletişim kutusundan kaçınmak

Her döngüde 'Farklı Kaydet' iletişim kutusu her oluşturulduğunda enter tuşuna el ile girmek zorunda kalmak istemiyorum. Bu betiği dağıttığımda, 1k + iterasyonlara bakabilirdim.

Sub AlterID() 

Dim ws As Worksheet 
Dim strPath As String 
Dim myFile As Variant 
Dim strFile As String 

Set ws = Worksheets("Summary Data") 

For Each c In Worksheets("Data").Range("A2:A11").Cells 
    Worksheets("Summary Data").Range("B1").Value = c.Value 

    strFile = ws.Range("D3").Value 
    strFile = ThisWorkbook.Path & "\" & strFile 

    myFile = Application.GetSaveAsFilename _ 
    (InitialFileName:=strFile, _ 
     FileFilter:="PDF Files (*.pdf), *.pdf", _ 
     Title:="Select Folder and FileName to save") 

    If myFile <> "False" Then 
     ws.Range("D3:H9").Select 
     Selection.ExportAsFixedFormat _ 
      Type:=xlTypePDF, _ 
      Filename:=myFile, _ 
      Quality:=xlQualityStandard, _ 
      IncludeDocProperties:=True, _ 
      IgnorePrintAreas:=False, _ 
      OpenAfterPublish:=False 
    End If 

    Next 

End Sub 
+0

ve manuel olarak belirtmiyorsanız oluşturulacak dosya adları ... –

+0

Sanırım bilgi eksikliğim burada devreye giriyor. Dosya konumları statik olacak, bu yüzden bir dosya yolunu kodlayabiliyordum. Dosyanın adı sadece bir hücrenin değerinden gelir (burada olduğu gibi). – regularGuy

+0

Neden 'Filename: = strFile' ve' GetSaveAsFilename'den kurtulun? – Jeeped

cevap

1
Sub AlterID() 

    Dim ws As Worksheet, c As Range 
    Dim strFile As String 

    Set ws = Worksheets("Summary Data") 

    For Each c In Worksheets("Data").Range("A2:A11").Cells 

     ws.Range("B1").Value = c.Value 

     strFile = ThisWorkbook.Path & "\" & ws.Range("D3").Value 

     ws.Range("D3:H9").ExportAsFixedFormat _ 
         Type:=xlTypePDF, _ 
         Filename:=strFile, _ 
         Quality:=xlQualityStandard, _ 
         IncludeDocProperties:=True, _ 
         IgnorePrintAreas:=False, _ 
         OpenAfterPublish:=False 
    Next 

End Sub 
Sen konumları bekliyoruz anlatan gerekecektir
0

Uygulama uyarılarını kapatmayı denediniz mi? İşte Düzenleme 1

Application.DisplayAlerts = False 'before your code 
Application.DisplayAlerts = True 'after your code 

Bir PDF bir dosya kaydetmek için kullandığı bir alt olan

Sub SaveAsPDF() 
Dim myValue As Variant 
Dim mySheets As Variant 

mySheets = Array("Report") 
For Each sh In mySheets 
    Sheets(sh).PageSetup.Orientation = xlLandscape 
Next 

uid = InputBox("Enter your UID") 
uid = StrConv(uid, vbProperCase) 

Application.PrintCommunication = False 
    With Sheets("Report").PageSetup 
     .FitToPagesWide = 1 
     .FitToPagesTall = False 
    End With 
    Application.PrintCommunication = True 

Dim fName As String 
fName = "HMB SOX report for week ending " & ActiveSheet.Range("H4").Text 
Call selectPage("Report") 
With ActiveSheet 
     .ExportAsFixedFormat Type:=xlTypePDF, fileName:= _ 
      "C:\Users\" & uid & "\Desktop\" & fName, :=xlQualityStandard, _ 
     IncludeDocProperties:=True, IgnorePrintAreas:=False, Publish:=False 
End With  

End Sub

+0

Bunu denedim. Tim Williams'ın düşündüğü gibi sorun, kutuyu oluşturan GetSaveAsFilename işlevini kullandım. Bunu kullanmamayı ve sadece sabit kodu dosya yolunu kullanmamayı ve her döngüdeki dinamik dosya adı için bir hücreyi referans olarak kullanmayı çok isterim. – regularGuy

İlgili konular