2016-08-08 10 views
-1

배경 :가져 오기 특정 파일

은 내가 자동으로 액세스로 가져 싶습니다 매일 판매 파일을받을 수 있습니다. 현재 일관된 이름 지정 규칙을 사용하여 특정 폴더에 저장됩니다. 필자는 매일 이러한 파일을 검토하지 않고 가져 오기 프로세스를 푸시 버튼 절차로 만들고 싶습니다. 폴더에는 다른 파일들이 필요하지 않으므로 전체 파일을 가져올 수 없습니다.

파일 명명 규칙 : DAILY.SALES.20160611

합니다 (20,160,611 올해입니다 - 2016, 월 - 6 월, 일 11 일) 필요

도움말 :

I 모든 파일을 가져올 수 있지만 "Daily.Sales"로 시작하는 파일 만 지정하는 방법을 알아낼 수 없습니다. 아래 코드는 지정하지 않고 모든 것을 가져올 수있는 코드입니다. 내 가정은 경로 또는 strFile 함께 할 수있는 뭔가가 있지만 시도한 변형 중 아무도 작동하지 않았습니다.

코드를 업로드하기 전에 이미 업로드했는지 여부를 실제로 확인할 수 있다면 좋을 것입니다.하지만 각 사용 후에 테이블을 삭제하고 더 쉽게 모든 것을 다시 업로드해야한다면 좋을 것입니다.

Dim strFile As String 'Filename 
Dim strFileList() As String 'File Array 
Dim intFile As Integer 'File Number 
Dim filename As String 
Dim path As String 
DoCmd.SetWarnings False 
path = "C:\Desktop\Test\" 

    Dim objXL As Object 
    Dim wb As Object 

    Set objXL = CreateObject("Excel.Application") 

    strFile = Dir(path & "*.xls") 
    While strFile <> "" 

     Set wb = objXL.Workbooks.Open(path & strFile) 

     If wb.Sheets(1).Range("A1") <> "No Data" And wb.Sheets(1).Range("A1") <> "" Then 
      'add files to the list 
      intFile = intFile + 1 
      ReDim Preserve strFileList(1 To intFile) 
      strFileList(intFile) = strFile 
     End If 
     strFile = Dir() 
Debug.Print strFileList(intFile) 
     wb.Close False 
     Set wb = Nothing 
    Wend 

'see if any files were found 
If intFile = 0 Then 
MsgBox "No files found" 
Exit Sub 
End If 

'cycle through the list of files 
For intFile = 1 To UBound(strFileList) 
filename = path & strFileList(intFile) 
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel8, "Stage", filename, False 

Call Format_Staging_Table 
Call Copy_from_Stage_to_Master 
Call Clear_Staging_Table 

Next intFile 
DoCmd.SetWarnings True 

당신은 통화 조각을 무시할 수 있습니다, 그들은 사람이 제공 할 수있을 것으로 어떤 도움이나 조언

덕분에 ... 나는 그것에서 일단의 데이터를 포맷 할 수 있습니다!

+0

당신이 원하는 마 ... 그 ... 기본적으로 ... 필요에 맞게 경로와 파일 이름과 일치하는 폴더를 변경하는 수정? 'strFile = Dir (경로 & "Daily.Sales * .xls")' – HansUp

+0

"내가 시도한 유사 콘텐츠는 아무 것도 작동하지 않았다"- 당신이 시도한 것을 이해하기가 어렵다. - 모든 DOS 파일에 대해 seacrh 스펙이 작동 할 것이다. - @HansUp 제안은 "Daily Sales. *. xls"및 ""Daily Sales. *. xls "와 마찬가지로 충분히 간단하고 효과적입니다. 그러면"t would 코드가 실제로 업로드 전에 업로드되었는지 여부를 코드가 실제로 확인할 수 있다면 좋을 것 "- MS 액세스를 사용하고 있습니다. - 데이터베이스는 전송 스프레드 시트 이상의 것을 사용하고 있다고 가정합니다. 단순한 로그 파일 테이블과 업데이트 레코드 세트 및 테이블에 있는지 확인하기위한 쿼리로 쉽게 처리 할 수 ​​있습니다. – dbmitch

답변

관련 문제