You can use the Range.Copy method, but it will still be slow.
The problem is that when you copy cells by column the internal index will have to sort for every cell with the current desigen. So the best approch is to load a cell from Left to right, up to down.
A workaround, if you know the number of columns to be created is to make sure the cells are created before you start to copying.
You can do something like this (the address is just an example)...
Not very pretty, but should make the copy faster.