Excel VBA:使用适当的单元格数据types粘贴剪贴板数据(外部源)

我从外部源(其他应用程序,如sqlClients:Heidi,MS SQL Management Studio,内部工具等)复制表格数据(制表符分隔),并将它们粘贴到Excel工作表中以进行扩展分析。

我一直在努力制作一个macros来粘贴正确格式的特定列,而不是改变数据显示方式的Generaltypes。

起初,我尝试设置特定的列到适当的数据types,然后才使用paste special粘贴值:

 ActiveSheet.Range("B:D,X:X").NumberFormat = "@" ActiveSheet.Range("A1").PasteSpecial _ Paste:=xlPasteValues _ , Operation:=xlNone _ , SkipBlanks:=False _ , Transpose:=False 

可悲的是,它给Run Time Error '1004' PasteSpecial method of Range class failed ,我无法解决。

接下来我尝试了TextToColumns

  ActiveSheet.Range("A1").Select ActiveSheet.Paste For Each cell In Selection.Cells If cell <> "" Then cell.TextToColumns _ Destination:=cell _ , DataType:=xlDelimited _ , ConsecutiveDelimiter:=False _ , Space:=False _ , TextQualifier:=xlTextQualifierNone _ , Tab:=True _ , semicolon:=False _ , comma:=False _ , other:=False _ , FieldInfo:=Array(Array(0, 2), Array(1, 2), Array(3, 2), Array(10, 2), Array(15, 2)) End If Next 

它不仅没有像预期的那样工作(它有什么问题?),但它似乎并不高效,因为它在循环遍历每个单元格之前粘贴剪贴板内容。 我的桌子可能真的很大,因此这将花费很多时间!

所以,我想知道是否有一个更好的/优雅的方式来将剪贴板数据从外部来源粘贴到适当的单元格数据types。 如果没有,帮助修复上述线索也不错。

预先感谢您<3

Edit.1:

现在我有了一些正确的代码工作得益于@ jivko的评论:

 ActiveSheet.Range("A1").Select ActiveSheet.PasteSpecial Format:="Unicode Text", Link:=False, DisplayAsIcon:=False 

由于我从不同来源以不同列数粘贴代码,所以我想知道如何在粘贴之前知道剪贴板中有多less列,以便我可以预先应用适当的格式?

一个想法是Paste > Count the columns > Apply the correct Format > Paste again 。 这听起来并不完美,但它应该完成工作。

如果您有更好的解决scheme,请随时分享<3