2014-12-11 3 views
1

이름에 날짜가있는 수백 개의 파일이 있습니다. 이름에서 날짜를 가져 와서 파일의 각 행에있는 각 파일의 첫 번째 열에 넣어야합니다. 예 - datarequested20140209.csv범위를 사용하고 셀에 올바른 데이터를 가져 오지 못함

나는 이미 이름에서 날짜를 가져 와서 재배치했습니다. 요청한 것을 거꾸로 처리했습니다. 저는 열을 추가하고 첫 번째 셀 (헤더)을 올바르게 설정할 수 있습니다. 두 개 이상의 행 (머리글 더하기 1)이 있으면 잘 작동하고 셀에 날짜를 넣습니다.

그러나 헤더 행과 단일 행만있는 경우 두 번째 행의 헤더를 반복합니다. 나는 뭔가를 놓치고 있어야합니다. 어떤 제안?

여기 내 코드는 지금까지 있습니다 :

'Writing to the file 
Dim objXLApp, objXLWb, objXLWs 
'Getting modified date 
Dim FSO, outFQN 

Dim sfile, strFolder, strSub1 
Dim sYear, sMonth, sDay, sName, sDate 
Dim nPos, nPos2 

strFolder = "C:\test1" 


set objFSO = CreateObject("Scripting.FileSystemObject") 
'set objOutput = objFSO.OpenTextFile(strFolder & "\" & strOutput, 8, true) 
set objShell = CreateObject("WScript.Shell") 
set objFolder = objFSO.GetFolder(strFolder) 

for each objFile in objFolder.Files 
     sfile = objFile.Name 
     'Parse and fix date 
     nPos = InStr(sfile,"2014") 
     nPos2 = "8" 
     'msgbox(nPOS) 
     sName=MID(sfile, nPos,nPos2) 
     'msgbox(sName) 
     sYear=MID(sName, 1, 4) 
     sMonth=MID(sName, 5, 2) 
     sDay=MID(sName, 7, 2) 
     sDate = sMonth & "-" & sDay & "-" & sYear 
     'sYear = MID(nPO 
     'msgbox(sDate) 
    Set objXLApp = CreateObject("Excel.Application") 
     objXLApp.Visible = False 
    Set objXLWb = objXLApp.Workbooks.Open("C:\test1\"& sfile) 
    ' Working with Sheet1 
    Set objXLWs = objXLWb.Sheets(1) 
     With objXLWs 
      '.Columns("A:A").NumberFormat = "123" 
      .Columns("A:A").Insert xlToRight 
      .Cells(1, 1).Value = "Date_Modified" 
      .Cells(2, 1).Value = sDate 
    set Range = objXLWs.Range("A2:A"&objXLWs.UsedRange.Rows.Count) 
     Range.FillDown 
     End With 
    ' Save 
    StrSub1 = "C:\test1\sub1\" 
    objXLWb.SaveAs StrSub1 & sfile 
    objXLWb.Close (False) 
    ' File Formats 
    '51 = xlOpenXMLWorkbook (without macro's in 2007-2010, xlsx) 
    '52 = xlOpenXMLWorkbookMacroEnabled (with or without macro's in 2007-2010, xlsm) 
    '50 = xlExcel12 (Excel Binary Workbook in 2007-2010 with or without macro's, xlsb) 
    '56 = xlExcel8 (97-2003 format in Excel 2007-2010, xls) 
    Set objXLWs = Nothing 
    Set objXLWb = Nothing 
    objXLApp.Quit 
    Set objXLApp = Nothing 
next 

감사는!

+0

실제 코드는 그런 식으로 들여 쓰지 않습니까? –

+1

아, VB.NET, VBA 또는 VBScript입니까? 모두의 수 없습니다 ... –

+1

죄송합니다 - VBscript. 그리고, 그것은 들여 쓰기가되었습니다. 다시, 죄송합니다. 고치려고합니다. –

답변

0

그래서 좌절의 더 몇 분 후에 내가 수정으로이 함께했다 :

set Range = objXLWs.Range("A2:A"&objXLWs.UsedRange.Rows.Count) 
     if objXLWs.UsedRange.Rows.Count = "2" then 
     .Cells(2, 1).Value = sDate 
     Else 
     Range.FillDown 
     End if 
     End With 

을 추가 한 경우에만 2 개 행이 있다면 문은 filldown을 무시하는 경우. 문제 해결됨!

관련 문제