2013-01-21 4 views
0

엑셀 파일을 사용하는 Access 2003에서 모듈을 실행하려고합니다. 셀에 정보가 있으면 A1, B1 등에서 필드 헤더와 셀을 복사합니다. ... 각 행을 반복하면서. 또한 셀에 복사해야하는 데이터가있는 주석이 있습니다.Access 2003에서 Excel 데이터 정렬/조작 VBA

완벽한 시나리오에서 코드는 각 행, 셀 단위로 이동하고 사용자, 날짜, 셀의 데이터 및 주석을 가져 와서 기존의 액세스 테이블에 새 레코드를 만듭니다. 셀이 비어 있으면 바이 패스됩니다. 4 시트가 있고 코드 루프를 만드는 방법을 알고, 나는 단지 Excel에서 끌어 오기 위해 액세스 할 수 없습니다.

나는 데이터를 가져오고 싶지 않습니다. 주석으로 처리해야합니다.

모든 조언을 주시면 감사하겠습니다. 감사!

Sub copy3() 

Dim rs2 As New ADODB.Recordset 
Dim cnn2 As New ADODB.Connection 
Dim cmd2 As New ADODB.Command 

With cnn2 
.Provider = "Microsoft.Jet.OLEDB.4.0" 
.ConnectionString = "Data Source=C:\FilePath.xls;" & "Extended Properties=Excel 8.0;" 
.Open 
End With 

Set cmd2.ActiveConnection = cnn2 
cmd2.CommandType = adCmdText 
cmd2.CommandText = "SELECT * FROM [Jan-Mar$] Where [Name] IS NOT NULL" 
rs2.Open cmd2 

While Not rs2.EOF 
...Not sure what to write here but I got a msgbox to appear... 
rs2.MoveNext 
Wend 
+2

뭔가가 좋아? http://stackoverflow.com/questions/14285106/formatting-tables-imported-via-a-report/14285559#14285559 – Fionnuala

+0

이것은 내가 찾고있는 것에 매우 가깝습니다. 하지만 행 단위로 이동하는 대신, 셀 단위로 이동하여 데이터가있는 셀을 선택하려고합니다. 열세. 계산해 봤어? 나는 그것에 대해 읽고 있지만 단지 그것의 일부를 이해하고있다. 그리고 무엇이 'If rng.Cells (i, 1) Like "Program *"Then? 나는 If Then 문에 익숙하지만 Like를 사용한 적이 없다. 감사합니다 – Grant

+0

신경 쓰지 마, 알아 냈어. 나는 그저 더 많은 것을 혼란시킬 필요가 있었다. 그러나 셀 단위로 셀을 이동하여 null인지 값이 있는지 확인하려면 각 행의 끝에 도달 한 후 1로 재설정되는 정수를 사용해야합니까? – Grant

답변

2

감사 Remou을 조언과 도움을 : 아래

내가 BTW 왔 생각에 가장 가까운 것입니다. 이것은 나를 위해 마지막으로 일한 것입니다 :

Set rs = db.OpenRecordset("TestTable") 
xl.Visible = False 

Set ws = xl.Workbooks.Open("C:\file.xls").Sheets("Jan-Mar") 
Set rng = ws.UsedRange 

'Row 1 is all dates so start at Row 2 
For i = 2 To rng.Rows.Count 
    'Column A contains names so start at Column B 
    For j = 2 To rng.Rows(i).Cells.Count 
     If rng.Cells(i, j) = "" Or rng.Cells(1, j) = "Total" Then 

    Else 
     On Error Resume Next 
     rs.AddNew 
     rs!EmployeeName = rng.Cells(i, 1) 
     rs!Date = rng.Cells(1, j) 
     rs!PointValue = rng.Cells(i, j) 
     str = rng.Cells(i, j).Comment.Text 
     str = Right(str, Len(str) - 14) 
     'MsgBox str 
     rs!Comments = str 
     rs.Update 
    End If 
Next 
Next 
Set rs = Nothing 
Set rng = Nothing 
ws.Parent.Close 
xl.Quit