Сохранение рабочих таблиц в формате CSV из Excel - PullRequest
2 голосов
/ 05 августа 2011

У меня есть электронная таблица Excel с 6 рабочими листами, где я хотел бы вывести 3 листа в формате CSV. Я нашел этот удивительный макрос: Сохраните каждый лист в рабочей книге в отдельные файлы CSV

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

  1. В настоящий момент он выводит все 6 листов в формате CSV ... Мне нужно только 3, я мог бы в этом случае жестко связать имена. Я вижу, что макрос зацикливается на рабочих листах и ​​экспортирует его, как лучше всего изменить содержимое массива рабочих таблиц?

  2. Эта электронная таблица используется для создания файлов конфигурации, поэтому она используется для пакетов разных размеров в разное время. На рассматриваемых листах у меня есть формулы, «заполненные» до 100 строк ... поэтому, если они используются, скажем, для 10 строк, необходимо удалить 90 строк запятой с конца CSV. Но это число может изменяться ... Я подумал, что было бы здорово, если бы он посмотрел на лист ввода (называемый «Данные») и увидел, сколько строк было заполнено, чтобы решить, сколько строк экспортировать?

Глядя на существующий макрос, я хочу установить переменную «EndRow» в последней строке таблицы «Данные», в которой есть что-то в столбце M. Поэтому мне нужно перебрать столбец, проверить содержимое ячейки, а затем обновить переменную, но как мне выбрать лист / столбец, чтобы сделать это?

3) Можно ли применить этот макрос к кнопке на одном из листов?

Ответы [ 2 ]

1 голос
/ 08 августа 2011
  1. Решено, добавлен массив к рабочим листам в цикле For, содержащий 3 листа, которые я хочу экспортировать:

    For Each wsSheet In Worksheets(Array("UDP", "Users", "Unity")) 
    
  2. Решено, изменен Endow из существующегоформула для (за пределами С):

    EndRow = ThisWorkbook.Worksheets("Data").Range("M" & Rows.Count).End(xlUp).Row 
    
  3. Ссылки были решены, спасибо - добавил CommandButton, работает хорошо.

1 голос
/ 05 августа 2011

1) Когда он перебирает листы, вы можете в этот момент предложить пользователю с сообщением msgbox «Хотите экспортировать? Если он выберет« да », то он будет экспортирован. Если он выберет« нет », он пропустим его и перейдем к следующему листу:

For Each wsSheet In Worksheets
    wsSheet.Activate
    If MsgBox("Do you want to export " & wsSheet.Name & " ?", vbYesNo) = vbYes Then
        'User has selected to export that sheet
        nFileNum = FreeFile
        Open csvPath & "\" & _
          wsSheet.Name & ".csv" For Output As #nFileNum
        ExportToTextFile CStr(nFileNum), Sep, False
        Close nFileNum
    End If
Next wsSheet

2) Какие пустые строки отображаются в данный момент, если в них нет данных? Можете ли вы опубликовать формулу, которая находится в этих 100 строках?

3) Вы уверены, что можете. Вот несколько хороших сайтов, на которых вы можете узнать это:

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