Excel 使用范围而未在单元格中获取正确的数据

Excel 使用范围而未在单元格中获取正确的数据,excel,vba,vbscript,Excel,Vba,Vbscript,我有几百个名字里有日期的档案。我需要从名称中提取日期,并将其放在文件中每行的每个文件的第一列中。示例-datarequested20140209.csv 我已经从名字中提取了日期并重新排列了它——它是按要求向后的。我可以添加列并正确设置第一个单元格(标题)。如果有超过2行(页眉加1),则可以正常工作,并将日期放入单元格中 但是,如果只有标题行和单行,它会在第二行重复标题。我一定错过了什么。有什么建议吗 以下是我目前的代码: 'Writing to the file Dim objXLAp

我有几百个名字里有日期的档案。我需要从名称中提取日期,并将其放在文件中每行的每个文件的第一列中。示例-datarequested20140209.csv

我已经从名字中提取了日期并重新排列了它——它是按要求向后的。我可以添加列并正确设置第一个单元格(标题)。如果有超过2行(页眉加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

谢谢!

所以,在经历了几分钟的挫折之后,我想出了一个解决办法:

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

添加了一个if语句,以便在只有两行时忽略向下填充。问题解决了

您的实际代码[没有]是那样缩进的吗?哦,是VB.NET、VBA还是VBScript?不可能都是他们…抱歉-VBscript。而且,它是缩进的,只是在匆忙发布。再一次,对不起。我会设法解决的。