Хобрук: Ваш путь к мастерству в программировании

Код VBA не работает на всех листах Excel

Настройка:

    • Использование VBA в Access
    • Экспорт четырех таблиц в виде четырех листов в один новый файл Excel с помощью DoCmd.TransferSpreadsheet acExport
    • изменить экспортированный файл с кодом vba в доступе

    Что я хочу сделать:

    • В файле excel четыре листа. В каждом листе по всем заполненным столбцам должна применяться функция textToColumn.

    Проблема:

    • Выделение первой строки полужирным шрифтом работает на каждом листе. Функции textToColumn работают только на первом листе.

    Мой код:

    Dim xlApp As Object
    Dim xlSheet As Object
    
    Set xlApp = CreateObject("Excel.Application")
    Set xlSheet = xlApp.Workbooks.Open("C:\Users\jfrick\Documents\BPM Access\Revenue Evolution GFS.xlsx")
    
    With xlApp
            .Application.Cells.Select
            .Application.Selection.ClearFormats
            .Application.Rows("1:1").Select
            .Application.Selection.Font.Bold = True
            .Application.Cells.Select
            .Application.Selection.RowHeight = 12.75
            .Application.Selection.Columns.AutoFit
    
            .Application.Range("E:E").TextToColumns
            .Application.Range("F:F").TextToColumns             
            .Application.ActiveWorkbook.Save
            .Application.ActiveWorkbook.Close
            .Quit
    End With
    

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

    Dim ws As Worksheet
    
    For Each ws In xlApp.Worksheets 'also tried xlSheet.Worksheets but same result
        ws.Application.Range("E:E").TextToColumns
        ws.Application.Range("F:F").TextToColumns
    Next ws
    

    --> Как я могу применить функцию "textToColumn" к столбцам на каждом листе?

    11.12.2017

    • не могли бы вы открыть диспетчер задач и сказать мне, сколько процессов Excel у вас есть после запуска вашего макроса? 11.12.2017

    Ответы:


    1

    Вы почти у цели, простое заблуждение:

    Измените это:

    For Each ws In xlApp.Worksheets 'also tried xlSheet.Worksheets but same result
        ws.Application.Range("E:E").TextToColumns
        ws.Application.Range("F:F").TextToColumns
    Next ws
    

    К этому:

    For Each ws In xlApp.Worksheets
        ws.Range("E:E").TextToColumns
        ws.Range("F:F").TextToColumns
    Next ws
    

    Поскольку вы ссылаетесь на ws.Application.Range в своей попытке, вы вызываете .Range для объекта приложения, а не для объекта рабочего листа, который ссылается на активный рабочий лист, а не ws

    11.12.2017
    Новые материалы

    Не зря же это называют интеллектом
    Стек — C#, Oracle Опыт — 4 года Работа — Разведывательный корпус Мне пора служить Может быть, я немного приукрашиваю себя, но там, где я живу, есть обязательная военная служба на 3..

    LeetCode Проблема 41. Первый пропущенный положительный результат
    LeetCode Проблема 41. Первый пропущенный положительный результат Учитывая несортированный массив целых чисел, найдите наименьшее пропущенное положительное целое число. Пример 1: Input:..

    Расистский и сексистский робот, обученный в Интернете
    Его ИИ основан на предвзятых данных, которые создают предрассудки. Он словно переходит из одного эпизода в другой из серии Черное зеркало , а вместо этого представляет собой хронику..

    Управление состоянием в микрофронтендах
    Стратегии бесперебойного сотрудничества Микро-фронтенды — это быстро растущая тенденция в сфере фронтенда, гарантирующая, что удовольствие не ограничивается исключительно бэкэнд-системами..

    Декларативное и функциональное программирование в стиле LINQ с использованием JavaScript с использованием каррирования и генератора ...
    LINQ - одна из лучших функций C #, которая обеспечивает элегантный способ написания кода декларативного и функционального стиля, который легко читать и понимать. Благодаря таким функциям ES6,..

    Структуры данных в C ++ - Часть 1
    Реализация общих структур данных в C ++ C ++ - это расширение языка программирования C, которое поддерживает создание классов, поэтому оно известно как C с классами . Он используется для..

    Как я опубликовал свое первое приложение в App Store в 13 лет
    Как все началось Все началось три года назад летом после моего четвертого класса в начальной школе. Для меня, четвертого класса, лето кажется бесконечным, пока оно не закончится, и мой отец..