2017-07-28 97 views
0

要求是:改变字体颜色和对齐在Excel由VBA

我已经EXCEL的固定模板,其中从4行到行10(可能更未来的)将被删除,并从CSV每天加入。 现在我的VBS正在从Excel中删除现有记录并将数据从CSV中删除。这是完美的工作。在这之后需要做一些小的修改,是否可以动态地删除现有的行 即今天我有10行,所以它清除10,明天如果有20行可以清除这些记录,并按CSV输入行号插入。

这里是我现有的代码:

srccsvfile = Wscript.Arguments(0) 
tgtxlsfile = Wscript.Arguments(1) 

'Create Spreadsheet 
'Look for an existing Excel instance. 
On Error Resume Next ' Turn on the error handling flag 
Set objExcel = GetObject(, "Excel.Application") 
'If not found, create a new instance. 
If Err.Number = 429 Then '> 0 
    Set objExcel = CreateObject("Excel.Application") 
End If 

objExcel.Visible = False 
objExcel.DisplayAlerts = False 

'Import CSV into Spreadsheet 
Set objWorkbookSrc = objExcel.Workbooks.Open(srccsvfile) 
Set objWorksheetSrc = objWorkbookSrc.Worksheets(1) 
Set objWorkbookTgt = objExcel.Workbooks.Open(tgtxlsfile) 
Set objWorksheetTgt = objWorkbookTgt.Worksheets("Report") 
'Adjust width of columns 
Set objRange = objWorksheetSrc.UsedRange 
objRange.Borders.LineStyle = 1 
Set objRangeToCopy = objRange.Resize(objRange.Rows.Count - 1).offset(1) 
objWorksheetTgt.Rows(4).Resize(10).Clear 

objRangeToCopy.Copy objWorksheetTgt.Range("A4") 

aList = Array("NOT ", "NO ", "NONE", "!") 
For Each Item In aList 
      For Each c In objWorksheetTgt.UsedRange 
       If InStr(1, c.Value, Item) > 0 Then 
        c.Interior.ColorIndex = 6 
       End If 
      Next 
Next 

'Save Spreadsheet, 51 = Excel 2007-2010 
objWorkbookTgt.Save 
objWorkbookTgt.Close(False) 
objWorkbookSrc.Close(False) 

'Release Lock on Spreadsheet 
objExcel.Quit() 
Set objWorksheetSrc = Nothing 
Set objWorkbookSrc = Nothing 
Set objWorksheetTgt = Nothing 
Set objWorkbookTgt = Nothing 
Set objExcel = Nothing 

最后一些点睛之笔。 需要在Excel中的字体写这些数据:ABC_Font和尺寸: 和基于一些列名需要/右,即名称和位置值应该是“中心”和电话不应该“对齐中心”和“WrapText”。而且新线人物也需要。 这也有可能吗?

我试图在Excel宏来完成这件事。并在代码中找到,认为它会使我的脚本最终,但它不工作。

现在我需要在我现有的上面的代码中添加下面的示例代码,我将它附加为txt文件供您参考。我附加了示例excel和csv。

Range("A4:F13").Select 
    With Selection.Font 
     .Name = "Trebuchet MS" 
     .Size = 10 
    End With 

Range("A4:A13").Select 
    With Selection 
     .HorizontalAlignment = xlCenter 
     .VerticalAlignment = xlCenter 
     .WrapText = False 
     .Orientation = 0 
     .AddIndent = False 
     .IndentLevel = 0 
     .ShrinkToFit = True 
     .ReadingOrder = xlContext 
     .MergeCells = False 
    End With 

这里是我的CSV

Name,Location,Phone,Comment1,Comment2,comment3 
"ABC!","Pune",123,"Expert Value","! Easy","Popular" 
"XYZ","Kol",567,"! Expert value",Easy,"!Credit" 
"PQR","Mum",234,"NOT value","Value for money","Debit" 
"RST","DEL",0,"Value","NO value","N/A" 
"Ram","KOL",100,"NO Value","value","N/A" 
"XYZ","Kol",567,"! Expert value","!Easy","!Credit" 
"qwer","DEL",567,"Expert value","Easy","!Credit" 
"cvbn","Pune",567,"! Expert value","!Easy","!Debit" 
"rtyu","DEL",567,"! Expert value","Easy","!Credit" 
"kllo","Pune",567,"Expert value","NOT Easy","!Bad" 

这是我现在的输出Excel的截图

enter image description here

但我想要的输出是这样的。

enter image description here

+0

对不起,有什么问题吗?它与格式有关吗?或者如何删除行? – BruceWayne

+0

http://help.mjtnet.com/article/19-converting-office-vba-to-vbscript –

+0

有2个代码片段...和2个Excel屏幕截图.....我有第一个代码输出是第1截图...现在我必须将第二个代码添加到第一个代码中,以便我的输出将像第二个屏幕截图一样 – goldenbutter

回答

0

只是复制并粘贴格式代码前的主代码保存点

+1

My代码已经添加在我的文章...你需要什么兄弟? – goldenbutter

+0

它不工作的兄弟......我想这.. 'code' 随着范围( “A4:F13”)。字体 请将.Name = “投石机MS” .Size = 10 结束With'code' – goldenbutter

0

小区集中.WrapText =真。

 With Range("A4:F13") 
     With .Font 
      .Name = "Trebuchet MS" 
      .Size = 10 
     End With 
     .HorizontalAlignment = xlCenter 
     .VerticalAlignment = xlCenter 
     .WrapText = True 
     .EntireRow.AutoFit 
    End With 
    With Range("A4:A13") 
     .HorizontalAlignment = xlCenter 
     .VerticalAlignment = xlCenter 
     .WrapText = True 
    End With 
+0

不工作....和以前一样...改变代码输出后,excel应该改变字体大小......并将其作为默认Calibri与11大小 – goldenbutter