1
我在將複製的範圍粘貼到目標工作簿時遇到問題。我有一個.csv文件,它有一個工作表,但每次導出.csv時,工作表名稱都會有所不同。有人可以看看我的代碼,並讓我知道,如果你看到任何突出的東西,將會把事情搞砸。打開CSV,將粘貼範圍複製到工作簿
代碼運行到Target.Copy
(選擇並複製目標範圍)。但是,我必須將這些值粘貼到目標工作簿的代碼似乎不能正常工作。
Sub Opencsv()
Dim FilesToOpen
Dim wkbTemp As Workbook, wkbDest As Workbook
Dim sh As Worksheet
Dim Last As Long
Dim Target As Range
Dim LastRow As Long, LastCol As Long
FilesToOpen = Application.GetOpenFilename(Title:="Text Files to Open")
On Error Resume Next
Last = fLastRow(wkbDest)
Set wkbTemp = Workbooks.Open(filename:=FilesToOpen, Format:=4)
Set wkbDest = ThisWorkbook.Worksheets("AdvFilter")
With wkbTemp.Sheets(1)
LastRow = .Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
LastCol = .Cells.Find("*", SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
Set Target = .Range(.Cells(1, 1), .Cells(LastRow, LastCol))
End With
Target.Copy
wkbDest.Sheets("AdvFilter").Activate
With wkbDest.Cells(Last + 1, "A")
.PasteSpecial xlPasteValues
.PasteSpecial xlPasteFormats
Application.CutCopyMode = False
End With
wkbTemp.Close
End Sub
'==================
Function fLastRow(sh As Worksheet)
On Error Resume Next
LastRow = sh.Cells.Find(What:="*", _
After:=sh.Range("A1"), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Row
On Error GoTo 0
End Function
UPDATE2:
Sub Opencsv2()
Dim FilesToOpen
Dim qt As QueryTable
Dim Last As Long
FilesToOpen = Application.GetOpenFilename(Title:="Text Files to Open")
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;" & FilesToOpen, Destination:=Cells(Last + 1, "A"))
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 437
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
For Each qt In ThisWorkbook.Sheets("AdvFilter").QueryTables
qt.Delete
Next qt
End Sub
謝謝,但唯一發生的事情是我的h eader將一列從A3:D3移至B3:E3。 – DigitalSea
不太理解。沒有任何數據導入電子表格?請張貼一些內容來重現。您可以在'Destination' arg中指定數據導入的左上角,這裏是'Cells(1,1)'。好奇聽到數據從'B3'開始。您可能在csv中有空行和列。請張貼樣本。 – Parfait
上面的update2代碼有效。我遇到的唯一問題就是在正確的目的地開始。我需要它使用AdvFilter工作表上的數據在最後一行下面開始一行或兩行。感謝您指點我正確的方向。導入從A1開始,消除了我的標題。 – DigitalSea