0
我有這個工作,我需要在VBA中做,如果我打開IDE並從那裏運行代碼,所有行爲都如預期,將數據從txt文件加載到新的臨時工作簿,複製並粘貼到我的工作表中,關閉臨時工作簿。從文件加載數據到excel
但是,當使用快捷方式(即Ctr + Sft + L)運行時,它將數據加載到臨時工作簿,激活它並在那裏停止執行......不將數據粘貼回工作表。我怎樣才能解決這個問題?
下面的代碼:
Sub Load_Text()
Dim wsSheet As Worksheet
InsertWorkSheet ("Data")
Set wsSheet = ThisWorkbook.Sheets("Data")
Workbooks.OpenText Filename:="C:\Documents and Settings\w059\Desktop\20121107_Report.txt", _
Origin:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=True, Comma:=False, _
Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), _
Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1)), TrailingMinusNumbers:=True
ActiveWorkbook.Worksheets(1).Cells.Copy wsSheet.Range("A1")
ActiveWorkbook.Close True
End Sub
Public Sub InsertWorkSheet(name As String)
Dim wsSheet As Worksheet
On Error Resume Next
Set wsSheet = ThisWorkbook.Sheets(name)
If wsSheet Is Nothing Then
ThisWorkbook.Sheets.Add After:=Sheets(Sheets.Count)
ThisWorkbook.Sheets(Sheets.Count).name = name
End If
End Sub
我錯過了點?我在宏中看不到任何粘貼命令 - 只是一個副本。順便說一句,當您在工作簿中插入工作表時,它會自動成爲當前的工作表,因此您可以使用ThisWorkbook.Sheets.Add,然後再使用ActiveSheet.Name = Name。另一方面,我會避免使用NAME等保留字作爲參數和變量的名稱,因爲這會導致奇怪的錯誤發生(這將是我在此宏中更改的第一件事)。 –
+1 @AndyBrown歡迎來到StackOverFlow :)很高興在這裏見到你。 [Wise Owl博客如何發展?](http://www.wiseowl.co.uk/blog/author/AndyBrown.htm)? – bonCodigo
@AndyBrown在ActiveWorkbook.Worksheets(1).Cells.Copy中有一個隱含的Destination:= wsSheet.Range(「A1」)wsSheet.Range(「A1」) – kooshka