我试图复制文本文件并使用以下代码将数据粘贴到excel中。代码在目标Excel工作表中复制和粘贴数据的程度令人满意,但另外,打开另一个与文本文件同名的excel文件和工作表,而不会在代码中的任何地方提示,并将数据粘贴到那里好。这是不可取的。我不想将数据拆分为列或执行任何其他操作。这是一个简单而简单的复制和粘贴任务。我搜索了这个和其他各种网站的答案,但未能得到一个适当解决我的问题。我无法弄清楚代码中的缺陷,因此,寻求你的帮助。任何帮助都将非常感谢。热烈的问候,
这是我的代码
Sub CopyTextFile()
Set TxtFileName = Workbooks.Open("D:\Spares\Inventory\list_of_spares.txt")
TxtFileName.Sheets(1).Range("A1").CurrentRegion.Copy
Workbooks("Macro Test.xlsm").Activate
ActiveWorkbook.Sheets(1).Range("A1").Select
ActiveSheet.Paste
End Sub
答案 0 :(得分:3)
您正在获取“额外文件”,因为您在Excel中打开文本文件(使用Workbooks.Open
语句),然后从中复制数据。
相反,使用filesystemobject
打开文件并读取数据,然后将其直接写入工作簿:
Sub CopyTextFile()
Dim oFso : Set oFso = CreateObject("Scripting.FileSystemObject")
Dim oFile : Set oFile = oFso.OpenTextFile("D:\Spares\Inventory\list_of_spares.txt", 1)
Dim sText
sText = oFile.ReadAll
oFile.Close
ThisWorkbook.Sheets(1).Range("A1").Value = sText
End Sub
了解这对您有何帮助?
答案 1 :(得分:0)
我找到了一种使您的代码正常工作的方法,您不得不关闭第二个打开的工作簿,您的代码帮助了我,这就是为什么我指出了所缺少的内容。
Sub CopyTextFile()
Set TxtFileName = Workbooks.Open("D:\Spares\Inventory\list_of_spares.txt")
TxtFileName.Sheets(1).Range("A1").CurrentRegion.Copy
Workbooks("Macro Test.xlsm").Activate
ActiveWorkbook.Sheets(1).Range("A1").Select
ActiveSheet.Paste
Workbooks(2).Close
End Sub
如果您提到Workbooks(1).Close,它将关闭第一个打开的excel,这里我们要关闭第二个工作簿,因此是Workbooks(2).Close
我在此链接上找到了一些excel vba代码,这些代码有助于:https://www.excel-easy.com/vba/examples/close-open.html