Импорт файлового цикла на основе имени переменной - PullRequest
0 голосов
/ 30 мая 2019

Я прошу прощения, если это ужасно легко, но у меня абсолютно нулевой опыт работы с VBA, и я как бы прыгаю через препятствия. Я выяснил, как импортировать файл из текста и конвертировать его по мере необходимости, используя функцию записи макроса. Я сейчас пытаюсь зациклить этот процесс, основываясь на переменной имени файла. Файл, который я собираюсь импортировать, будет использовать соглашение об именах AB1, AB2, AB3 и т. Д. Или что-то в равной степени произвольное: после импорта файла и его преобразования в код форматирования будет повторяться процесс на новой странице.

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

Sub LoadFromFile()
Dim fileName As String, folder As String

folder = "FILEPATH
fileName = ActiveCell.Value

ActiveCell.Offset(1, 0).Range("A1").Select

With ActiveSheet.QueryTables _
    .Add(Connection:="TEXT;" & folder & fileName, 
Destination:=ActiveCell)
    .FieldNames = True
    .RowNumbers = False
    .FillAdjacentFormulas = False
    .PreserveFormatting = True
    .RefreshOnFileOpen = False
    .RefreshStyle = xlInsertDeleteCells
    .SavePassword = False
    .SaveData = True
    .AdjustColumnWidth = True
    .RefreshPeriod = 0
    .TextFilePromptOnRefresh = False
    .TextFilePlatform = 850
    .TextFileStartRow = 1
    .TextFileParseType = xlDelimited
    .TextFileTextQualifier = xlTextQualifierDoubleQuote
    .TextFileConsecutiveDelimiter = False
    .TextFileTabDelimiter = False
    .TextFileSemicolonDelimiter = False
    .TextFileCommaDelimiter = True
    .TextFileSpaceDelimiter = False
    .TextFileColumnDataTypes = Array(1, 1, 1, 1)
    .TextFileTrailingMinusNumbers = True
    .Refresh BackgroundQuery:=False
End With
Cells.Select
With Selection.Font
    .Name = "Lucida Console"
    .Size = 8
    .Strikethrough = False
    .Superscript = False
    .Subscript = False
    .OutlineFont = False
    .Shadow = False
    .Underline = xlUnderlineStyleNone
    .ThemeColor = xlThemeColorLight1
    .TintAndShade = 0
    .ThemeFont = xlThemeFontNone

End With
Application.PrintCommunication = False
With ActiveSheet.PageSetup
  .Orientation = xlLandscape
       .LeftHeader = ""
    .CenterHeader = ""
    .RightHeader = ""
    .LeftFooter = ""
    .CenterFooter = ""
    .RightFooter = ""
    .LeftMargin = Application.InchesToPoints(0.25)
    .RightMargin = Application.InchesToPoints(0.25)
    .TopMargin = Application.InchesToPoints(0.75)
    .BottomMargin = Application.InchesToPoints(0.75)
    .HeaderMargin = Application.InchesToPoints(0.3)
    .FooterMargin = Application.InchesToPoints(0.3)
End With
Application.PrintCommunication = True

End Sub

1 Ответ

0 голосов
/ 30 мая 2019

если все файлы находятся в одной папке, вы можете использовать функцию, подобную этой, чтобы получить имя для всего файла в папке

Function listfiles(ByVal sPath As String)

    Dim vaArray     As Variant
    Dim i           As Integer
    Dim oFile       As Object
    Dim oFSO        As Object
    Dim oFolder     As Object
    Dim oFiles      As Object

    Set oFSO = CreateObject("Scripting.FileSystemObject")
    Set oFolder = oFSO.GetFolder(sPath)
    Set oFiles = oFolder.Files

    If oFiles.Count = 0 Then Exit Function

    ReDim vaArray(1 To oFiles.Count)
    i = 1
    For Each oFile In oFiles
        vaArray(i) = oFile.Name
        i = i + 1
    Next

    listfiles = vaArray

End Function

, а затем вы можете сделать «Для каждого», чтобыполучите каждый файл и запустите свой код внутри него.

удачи

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