Perhaps the following.
The assumption is that the stuff you want to copy to the Keynote export sheet can be from any other sheet. Hence the code sets a reference to the sheet with the Set wsInitialSheetName syntax. Of course if it's always copied from the same sheet then there's no need for that.
You could simply replace the
wsInitialSheet.Columns("A:C").Copy Sheet2.Range("A1")
with the VBA sheet code name - let's assume that's Sheet1. Hence the line of code would be
Sheet1.Columns("A:C").Copy Sheet2.Range("A1")
Note that I can't see any need for the SaveAs at the end unless you really do want to change the file name so I've commented it out.
Finally, rarely is it necessary to use code like .Select or .Activate. That just slows macros down, particularly when you may be using a loop to do the same stuff many times. Just reference objects directly. In addition it's regarded as good practice to put all Dim statements at the top of any code and always define the type of variable with the 'As ...whatever'. e.g. As String, As Long, As Workbook...
Bookmarks