Перебрать некоторые файлы (открыть, добавить столбец, сохранить и закрыть) - PullRequest
0 голосов
/ 15 декабря 2018

Я хочу открыть файл (не все файлы в папке), добавить столбец, сохранить изменения, а затем закрыть.Я хочу перебрать некоторые файлы и сделать то же самое.

Я сохранил свой файл с именами, включая дату (ггггммдд), например output_20181112_samples.csv

Допустим, я хочу перебрать два файла, output_20181113_samples.csv & output_20181114_samples.csv

Я думал, что смогу использовать I (индекс итерации) и поместить его в середину имени файла, но это не сработало.Я пытался найти решение, но большинство ответов - для перебора всех файлов в папке.

Sub open_add_col_save_close()

Dim i As Interger
For i = 1 To 10
    Select Case i
        Case 3, 4

            Workbooks.Open Filename:="C:\Users\todd\Downloads\output_2018111" & i & "_samples.csv"

                Columns("B:B").Select
                Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
                Range("A1").Select
                Selection.End(xlDown).Select
                ActiveCell.Offset(0, 1).Select
                ActiveCell.FormulaR1C1 = "2018111" & i
                ActiveCell.Offset(0, 0).Select
                Selection.Copy
                Range(Selection, Selection.End(xlUp)).Select
                ActiveSheet.Paste
                Application.CutCopyMode = False
                Selection.End(xlUp).Select
                ActiveCell.FormulaR1C1 = "date"
                Range("B2").Select

            Workbooks("output_2018111" & i & "_samples.csv").Save
            SendKeys "%s~"
            Workbooks("output_2018111" & i & "_samples.csv").Close
    End Select
Next i

End Sub

1 Ответ

0 голосов
/ 15 декабря 2018

Попробуй,

Sub open_add_col_save_close()
Dim Fn As String
Dim Wb As Workbook
Dim Ws As Worksheet
Dim i As Integer

For i = 1 To 10
    Fn = "C:\Users\todd\Downloads\output_2018111" & i & "_samples.csv"

    Select Case i
        Case 3, 4

            Set Wb = Workbooks.Open(Filename:=Fn, Format:=2)
                Set Ws = Wb.ActiveSheet
                With Ws
                    .Columns("B:B").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
                    .Range("A1").End(xlDown).Offset(0, 1) = "2018111" & i
                    .Range("b1", .Range("b1").End(xlDown)) = "2018111" & i
                    .Range("b1") = "date"
                End With
            Wb.Save
            Wb.Close (0)

    End Select
Next i

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...