Excel: как преобразовать текст в числовые форматы для нескольких рабочих книг - PullRequest
0 голосов
/ 28 марта 2012

У меня около 40 книг с 1000+ столбцами и около 1 миллиона записей.

К сожалению, большая часть данных была импортирована в текстовом формате, и я пытаюсь преобразовать определенные столбцы в числовой формат.

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

Ответы [ 2 ]

1 голос
/ 29 марта 2012

Вы знаете столбцы и цифры для изменения.Вы можете записать макрос этого и вставить его в эту базовую технику DIR ():

Option Explicit

Sub LoopThroughFolder()
Dim fPATH As String, fNAME As String
Dim wb As Workbook

fPATH = "C:\Path\To\My\Files\"      'remember the final \
fNAME = Dir(fPATH & "*.xl*")        'get first filename from fPATH
Application.ScreenUpdating = False  'speed up execution

    Do While Len(fNAME) > 0
        Set wb = Workbooks.Open(fPATH & fNAME)

        'your code here to format that activesheet

        wb.Close True       'save and close the edited file

        fNAME = Dir         'get the next filename
    Loop

Application.ScreenUpdating = True
End Sub
0 голосов
/ 31 января 2013
Option Compare Database
Public Function format(filepath, sheetname, sheetpath)


Set xls = CreateObject("EXCEL.APPLICATION")
xls.screenupdating = False
xls.displayalerts = False
xls.Visible = True
xls.workbooks.Open filepath
Set xlsdd = xls.ActiveWorkbook

'deleting headers

xls.Range("1:1").Select
xls.Selection.Delete Shift:=xlUp

'adding one column

xls.Columns("A:A").Select
xls.Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove

'adding 5 rows
 'ActiveWorkbook.Sheets("sheet1").Select
xls.Rows("1:5").Insert Shift:=xlDown

 ' fetching rows from access and putting them into excel
'  strsql = "select top 5 " & sheetname & ".* into top5_records from " & sheetname
'  DoCmd.RunSQL strsql
'  outputFileName = "C:\Users\hp\Desktop\top5_records.xls"
'  DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "top5_records",   outputFileName, True

'then open that excel and copy the rows

Set xls2 = CreateObject("EXCEL.APPLICATION")
xls2.screenupdating = False
xls2.displayalerts = False
xls2.Visible = True
xls2.workbooks.Open sheetpath
Set xlsdd2 = xls2.ActiveWorkbook
xls2.Rows("1:5").Select
xls2.Selection.Copy
xls.Cells(1, 1).Select
xls.activesheet.Paste



 'making first 6th row to be bold

xls.Rows("6:6").Select
With xls.Selection.Font
.Bold = True 
 .Name = "Arial"
    .Size = 10
    .Strikethrough = False
    .Superscript = False
    .Subscript = False
    .OutlineFont = False
    .Shadow = False
End With

'autofit the data

xls.Sheets(sheetname).Cells.Columns.autofit
xls.CutCopyMode = False

'making both the excel objects to be free

With xlsdd
.Save
.Close
End With
xls.Visible = False

Set xlsdd = Nothing
Set xls = Nothing

With xlsdd2
.Save
.Close
End With
xls2.Visible = False

Set xlsdd2 = Nothing
Set xls2 = Nothing

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