VBA-Skriptmakro an einem bestimmten Ort speichern

414
Michael Charry

Wie können Sie das folgende Skript so ändern, dass es in einem bestimmten Ordner gespeichert wird, anstatt zu fragen?

Sub Saveaspdfandsend() Dim xSht As Worksheet Dim xFileDlg As FileDialog Dim xFolder As String Dim xYesorNo As Integer Dim xOutlookObj As Object Dim xEmailObj As Object Dim xUsedRng As Range  Set xSht = ActiveSheet Set xFileDlg = Application.FileDialog(msoFileDialogFolderPicker)  If xFileDlg.Show = True Then xFolder = xFileDlg.SelectedItems(1) Else MsgBox "You must specify a folder to save the PDF into." & vbCrLf & vbCrLf & "Press OK to exit this macro.", vbCritical, "Must Specify Destination Folder" Exit Sub End If xFolder = xFolder + "\" + xSht.Name + Format(Now, " yyyy-mm-dd hmmAM/PM") + ".pdf"  'Check if file already exist If Len(Dir(xFolder)) > 0 Then xYesorNo = MsgBox(xFolder & " already exists." & vbCrLf & vbCrLf & "Do you want to overwrite it?", _ vbYesNo + vbQuestion, "File Exists") On Error Resume Next If xYesorNo = vbYes Then Kill xFolder Else MsgBox "if you don't overwrite the existing PDF, I can't continue." _ & vbCrLf & vbCrLf & "Press OK to exit this macro.", vbCritical, "Exiting Macro" Exit Sub End If If Err.Number <> 0 Then MsgBox "Unable to delete existing file. Please make sure the file is not open or write protected." _ & vbCrLf & vbCrLf & "Press OK to exit this macro.", vbCritical, "Unable to Delete File" Exit Sub End If End If  Set xUsedRng = xSht.UsedRange If Application.WorksheetFunction.CountA(xUsedRng.Cells) <> 0 Then 'Save as PDF file xSht.ExportAsFixedFormat Type:=xlTypePDF, Filename:=xFolder, Quality:=xlQualityStandard  'Create Outlook email Set xOutlookObj = CreateObject("Outlook.Application") Set xEmailObj = xOutlookObj.CreateItem(0) With xEmailObj .Display .To = "" .CC = "csc.canada@philips.com" .Subject = xSht.Name + ".pdf" .Attachments.Add xFolder If DisplayEmail = False Then '.Send End If End With Else MsgBox "The active worksheet cannot be blank" Exit Sub End If End Sub 

Danke, Michael

0
Willkommen bei Super User! Woher hast du dieses Skript und was hast du bisher ausprobiert? bertieb vor 6 Jahren 0

2 Antworten auf die Frage

0
HackSlash

Sie können sehen, dass das ausgewählte Element in eine Variable namens xFolder eingefügt wird . Kommentieren Sie den Abschnitt über xFileDlg bis zu dem Punkt, an den xFolder angehängt wird.

Ändern Sie das zu was auch immer Sie wollen:

xFolder = xFolder + "\" + xSht.Name + Format(Now, " yyyy-mm-dd hmmAM/PM") + ".pdf" 
Wenn das Problem dadurch gelöst wurde, markieren Sie die Lösung. Grünes Häkchen HackSlash vor 6 Jahren 0
0
leach613

Der einzige Grund, aus dem Sie einen Ordner auswählen müssen, ist dieser Teil.

Set xFileDlg = Application.FileDialog (msoFileDialogFolderPicker)

Wenn xFileDlg.Show = True Dann xFolder = xFileDlg.SelectedItems (1) Else MsgBox "Sie müssen einen Ordner angeben, in dem die PDF-Datei gespeichert werden soll." & vbCrLf & vbCrLf & "Drücken Sie OK, um dieses Makro zu beenden.", vbCritical, "Muss Zielordner angeben" Exit Sub End If

Dies ist ideal, wenn Sie den Ordner jedes Mal auswählen möchten oder einen neuen Ordner erstellen müssen. Wenn der Ordner jedoch vorhanden ist und Sie ihn immer an derselben Stelle speichern, nehmen Sie einfach den obigen Teil heraus und fügen Sie den Ordnerort manuell hinzu.

Beispiel:
xFolder = "C: \ MyPDFs" + "\" + xSht.Name + Format (jetzt "JJJJ-mm-TT hmmAM / PM") + ".pdf"