Ich habe bereits ein Makro erstellt, das einzelne Dateien für mich erstellt. Mit diesen Dateien habe ich einen weiteren VBA-Job in Outlook erstellt, der die Kontaktinformationen zur E-Mail hinzufügt, die benötigte Datei findet und an eine E-Mail anfügt. Ich muss dies zu einer Liste von etwa 50 verschiedenen Unternehmen machen, denen ich diese Audits zusende. Derzeit muss ich einen bestimmten Parameter hinzufügen, um auszuwählen, welche Firma ich "V003" verwende, zum Beispiel, nachdem dieser Job ausgeführt wird, gehe ich zum nächsten "V004" und so weiter.VBA Übergabe Liste der Variablen
Ich bin auf der Suche nach einer Möglichkeit, VBA die Liste der 50 Firmencodes, in denen ich alle als Ordner in einem bestimmten Verzeichnispfad haben. Wenn ich also den Job starte, wird er im Verzeichnispfad auf den Ordner V003 verweisen und diesen als VendorID-Variable verwenden, die ich erstellt habe, dann zum Anfang zurückschleifen und den nächsten Ordnernamen V004 im Verzeichnispfad holen und bis dahin filtern kommt zum letzten.
Es sei denn, jemand anderes hat eine Idee, die mich nicht 50 Mal den VBA-Job kicken lässt und jede Variable weitergibt. (Zur Zeit ist das, was ich getan habe, da ich diese Arbeitsplätze geschaffen und es ist immer noch ein wenig zeitaufwendig)
Dim GlobalVarEmail As String
Dim GlobalVarVendorName As String
Dim GlobalVendorId As String
Dim GlobalMonth As String
Dim GlobalYear As String
Dim GlobalAuditDate As String
Sub SendFilesbyEmail()
'the calling method of all sub methods.
GlobalVendorId = InputBox("What Vendor Letter are you trying to send out? (V Code: ex - V012)", "Vendor Code", "Type Here", 7500, 5000)
GlobalMonth = InputBox("What Month are you auditing for?(ex - Jan. Feb. Mar.)", "Month", "Type Here", 7500, 5000)
GlobalYear = InputBox("What year are you auditing for?(ex - 2016)", "Quarter", "Type Here", 7500, 5000)
GlobalAuditDate = InputBox("What is the audit date?(ex - 20160930)", "Quarter", "Type Here", 7500, 5000)
Call openExcel(GlobalVendorId)
Call SendAuditReport
End Sub
Public Function openExcel(UserReponse) As String
'this function is used to retrieve the vendor contact e-mail
Dim xlApp As Object
Dim sourceWB As Workbook
Dim sourceWS As Worksheet
Set xlApp = CreateObject("Excel.Application")
With xlApp
.Visible = False
.EnableEvents = True
End With
strFile = "G:\403(b)\User Folders\Chris W\SPARK Info\Contacts.xlsx"
Set sourceWB = Workbooks.Open(strFile, , False, , , , , , , True)
Set sourceWH = sourceWB.Worksheets("SPARK")
sourceWB.Activate
Rows("1:1").Select
Selection.AutoFilter
ActiveSheet.Range("$A$1:$H$100").AutoFilter Field:=1, Criteria1:=UserReponse
Range("F1").Select
GlobalVarEmail = Selection.End(xlDown).Value
Range("B1").Select
GlobalVarVendorName = Selection.End(xlDown).Value
ActiveWorkbook.Close SaveChanges:=False
End Function
Function SendAuditReport()
'this function will create a e-mail, (subjectline & body), attach the needed audit letter, and insert the needed vendor contact e-mail.
Dim Fname As String
Dim sAttName As String
Dim olApp As Outlook.Application
Dim olMsg As Outlook.MailItem
Dim olAtt As Outlook.Attachments
Set olApp = Outlook.Application
Set olMsg = olApp.CreateItem(0) ' email
Set olAtt = olMsg.Attachments
' send message
With olMsg
.Subject = GlobalVarVendorName & " " & GlobalMonth & " " & GlobalYear & " SPARK Audit"
.To = GlobalVarEmail
.CC = "[email protected]"
.Attachments.Add "G:\403(b)\User Folders\Chris W\Spark Audit\" & GlobalAuditDate & "\00-Ran Reports\" & GlobalVendorId & "\SPARK Audit Report " & GlobalVarVendorName & ".xlsx"
'you can add attachments here just type .Attachments.Add "folder path"
.HTMLBody = "Hello, <br /><br /> Attached is the file
'.Send
.Display
End With
End Function
Arrays (Param), Sammlungen, Wörterbücher, Klassen usw. Wo werden die 50 Quellcodes usw. aufbewahrt? Sie schließen auch nie die Excel-Anwendung, so dass es 50 Mal öffnen würde, müssen Sie Excel bei der öffentlichen Deklaration halten oder 'getobject' als Überprüfung vor' createobject' verwenden, da es in Excel ist, können Sie einfach 'new excel.application verwenden ' –
Die 50 Quellcodes werden im Verzeichnispfad außerhalb des .Attachment.add-Codes gespeichert. " G: \ 403 (b) \ Benutzerordner \ Chris W \ Spark Audit \ "& GlobalAuditDate &" \ 00-Ran Reports " Ah, ich habe nicht 50 mal darüber nachgedacht, also wie würdest du das am besten beheben? (Ich bin ziemlich neu in der Verwendung von Objekten, so dass ich nicht 100% ig sicher bin, wie Sie das implementieren, was Sie vorgeschlagen haben). – ChrisW