Excel로 데이터를 가져 오는 데는 여러 가지 방법이 있습니다. QueryTables (The_Barman에 의해 시연 됨), SQL, 가져 오기 마법사 등
일반적으로이 방법은 가져올 파일에 데이터가 얼마나 깨끗한 지와 레이아웃 방법을 정확히 알고있는 경우에 따라 다릅니다. 빈 행, 혼합 데이터 형식, 병합 된 셀 등이 있으면 예를 들어 악몽이 될 수 있습니다.
다음은 일반적으로 Excel에서 파일을 열어 모든 데이터를 가져 오는 느린 '무차별 대입'방법입니다. 다른 방법이 실패 할 때 종종 마지막으로해야 할 일입니다.
Option Explicit
Public Sub ImportData()
Dim CSVFilename As String
Dim writeToFilename As String
Dim writeToSheet As String
Dim readXL As Workbook
Dim readWS As Worksheet
Dim writeXL As Workbook
Dim writeWS As Worksheet
Dim UsedRng As Range
CSVFilename = Environ$("USERPROFILE") & "\Desktop" & "\SO2PO.csv"
writeToFilename = Environ$("USERPROFILE") & "\Desktop" & "\Open Order.xlsx"
writeToSheet = "PO Data"
Set writeXL = GetObject(writeToFilename)
Set writeWS = writeXL.Sheets(writeToSheet)
'writeWS.Parent.Windows(1).Visible = True
Set readXL = GetObject(CSVFilename)
With readXL
Set readWS = readXL.Sheets(1)
Set UsedRng = RealUsedRange(readWS)
writeWS.Range(UsedRng.Address).Value = UsedRng.Value
End With
'close CSV without saving
readXL.Close SaveChanges:=False
Set readWS = Nothing
Set readXL = Nothing
'close template with save
writeXL.Close SaveChanges:=True
Set writeWS = Nothing
Set writeXL = Nothing
End Sub
Public Function RealUsedRange(ByVal WS As Worksheet) As Range
'Find used range
Dim FirstRow As Long
Dim LastRow As Long
Dim FirstColumn As Integer
Dim LastColumn As Integer
On Error Resume Next
With WS
FirstRow = .Cells.Find(What:="*", After:=.Cells(.Rows.Count, .Columns.Count), LookIn:=xlValues, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext).Row
FirstColumn = .Cells.Find(What:="*", After:=.Cells(.Rows.Count, .Columns.Count), LookIn:=xlValues, LookAt:= _
xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext).Column
LastRow = .Cells.Find(What:="*", After:=.Range("A1"), LookIn:=xlValues, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
LastColumn = .Cells.Find(What:="*", After:=.Range("A1"), LookIn:=xlValues, LookAt:= _
xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
Set RealUsedRange = .Range(.Cells(FirstRow, FirstColumn), .Cells(LastRow, LastColumn))
End With
On Error GoTo 0
End Function
이 말은 싫지만 Excel 시트에 넣으려고했다는 말은 구체적입니다. 태그와 Excel, Excel-ExcelX가 Excel이라는 응용 프로그램이라는 것을 알았습니다. 사용 중이었고 엑셀 - VBA가 해결책이었습니다. 다른 응용 프로그램을 사용하여이 작업을 수행하려는 경우 아마도 다음과 같을 것입니다. –
예, Excel이 응용 프로그램 이었음이 분명했습니다. C# 또는 VB.Net과 같은 별도의 독립 실행 형 응용 프로그램을 작성했거나 SQL Server를 사용하는 더 큰 응용 프로그램의 일부로 작성했는지 여부와 상관없이 사용하고자하는 * 외부 * 메커니즘이 분명하지 않았습니다. 당신은 당신의 시스템을 알고 있습니다. 우리는하지 않습니다. 나는 정말로 여기에서 돕는 것을 즐긴다. 그러나 도움을 제공하려고 노력하는 것은 이것을 매우 고무하지 않는다. 프로젝트에 행운을 빈다. –
C# 및 VB.Net이 될 경우 태그에 넣을 것입니다 ... 물건을 요청할 때 나는 꽤 쓸쓸합니다. –