我相信我有一個獨特的問題,因爲我在互聯網上的任何地方都沒有看到任何類似的問題。VBA將數據從未打開的CSV文件複製到工作表而不打開已關閉CSV
我是一名業務分析員/應用程序開發人員,我想自動從其他用戶的Excel CSV文件中將數據收集到他們的個人計算機上,而無需打開文件並將其中斷。有沒有辦法?
這裏是我到目前爲止的代碼:
Option Explicit
Dim MyDocuments As String, strFileName, myToday, origWorkbook, origWorksheet, strConnection
Dim row As Integer
Private Sub btnStart_Click()
MyDocuments = Environ$("USERPROFILE") & "\My Documents"
myToday = Format(Date, "mmddyy")
strFileName = "DataFile" & myToday & ".csv"
strConnection = "TEXT;" & MyDocuments & "\DataFolder\" & strFileName
origWorksheet = "DataFile" & myToday
row = 1
On Error Resume Next
row = Range("A1").End(xlDown).row + 1
With ActiveSheet.QueryTables.Add(Connection:=strConnection, Destination:=Range("$A$" & row))
.Name = "temp"
.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
.TextFileColumnDataTypes = Array(1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
End Sub
就像我說的,我不希望CSV文件,而他們正在打開。我希望能夠在幕後做到這一點,以便他們在收集數據時能夠繼續工作。
我猜我最大的懸掛是它是一個CSV文件,或該文件未打開。如果有辦法可以完成,請告訴我。目前,我收到了一個超出範圍的錯誤。
當我運行你的代碼時,它將它打印在下一行...... – chancea
它可能是某種設置?也許在Excel中?每次運行程序時,都會將數據放入下一列。 – Lou
您的CSV文件的「A列」中是否有數據。我剛剛意識到,如果你的第一列是空的,那麼沒有數據將被複制到excel中,並且語句「row = Range(」A1「)。End(xlDown).row + 1'將不起作用,行變量將保持相等爲1.將Range(「A1」)更改爲一個您知道數據將被複制到的列,以便實際將行計數到下一行 – chancea