Znajomi, Próbuję otworzyć codziennie plik CSV (generowany codziennie z innego programu) i skopiować dane z arkusza CSV do określonego arkusza w bieżącym skoroszycie. Pracowałem nad tym kodem przez jakiś czas i myślę, że jest to naprawdę bliskie bycia prawidłowym, ale ciągle otrzymuję błąd 438 na mojej linii kopiowania/wklejania. Jakaś pomoc?Otwórz plik CSV i skopiuj
Dziękujemy!
Oto mój kod:
Sub GetCSV()
Dim thatWB As Workbook, thisWB As Workbook
Dim thisWS As Worksheet, thatWS As Worksheet
Dim zOpenFileName As String
Dim inputData As String
'get name of sheet to open
inputData = InputBox("Enter name of file")
'open CSV file
zOpenFileName = Application.GetOpenFilename
'error handling
If zOpenFileName = "" Then Exit Sub
Application.ScreenUpdating = False
Set thisWB = ThisWorkbook 'destination workbook
Set thisWS = Sheets("f_dump") 'destination worksheet
Set thatWB = Workbooks.Open(zOpenFileName) 'source CSV
Set thatWS = thatWB.Sheets(inputData) 'source worksheet
Application.CutCopyMode = False
thatWB.thatWS.Range("A1:G150").Copy Destination:=thisWB.thisWS.Range("A1")
thatWB.Close
End Sub
natomiast parentaging wspomnieć tutaj jest poprawna, bezpośrednia kopia będzie również działa dobrze, spróbuj tego wiersza: 'thatWS.Range (" A1: G150 ") Miejsce docelowe kopiowania: = thisWS.Range (" A1 ")' Aby było jasne, metoda 'PasteSpecial' również zadziała. To nie jest konieczne. –
Dziękuję wam obojgu. Oba rozwiązania działają poprawnie. Oznakowałem Lubosa jako poprawne, ale Scott działa równie dobrze. – tulanejosh