2017-07-20 9 views
0

私はここに必要なExcelテンプレートを提供しています。私の現在のシナリオとして、このExcelは修正パスに格納されます。しかし、CSVは毎日生成されます。VBScriptでExcelをカスタマイズする

私のVBスクリプトはcsvからデータを収集し、このExcelに書き込むためには毎日実行する必要がありますが、小さなカスタマイズが必要です。

ここで最初の3行は固定ヘッダーです。私はcsvを変換し、4行目からExcelの値を書き込む必要があります。明らかに私たちはそこに古いデータを持っています。 4行目から7行目までを削除し、csv値を必要な場所に配置する必要があります。適切な国境にも。

このタイプの出力を得るために私のvbsを変更することは可能ですか?

cscript C:\Test\MyScript.vbs \\C:\Test\Sample.CSV \\C:\Test\Sample.xlsx 

オリジナルのスクリプトは以下の通りです実行するために2つの引数を必要とします...以下のように MyScript.vbsをスクリプトを実行する

。私は以下のようなスクリーンショットを見たいと思う。

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 objWorkbook = objExcel.Workbooks.Open(srccsvfile) 
Set objWorksheet1 = objWorkbook.Worksheets(1) 

'Adjust width of columns 
Set objRange = objWorksheet1.UsedRange 
objRange.EntireColumn.Autofit() 
'This code could be used to AutoFit a select number of columns 
'For intColumns = 1 To 17 
' objExcel.Columns(intColumns).AutoFit() 
'Next 

'Make Headings Bold 
objExcel.Rows(1).Font.Bold = True 

'Freeze header row 
With objExcel.ActiveWindow 
    .SplitColumn = 0 
    .SplitRow = 1 
End With 
objExcel.ActiveWindow.FreezePanes = True 

'Add Data Filters to Heading Row 
objExcel.Rows(1).AutoFilter 

'set header row gray 
objExcel.Rows(1).Interior.ColorIndex = 15 
'-0.249977111117893 
aList=Array("NOT ", "NO ", "NONE", "!") 
For each item in aList 
For Each c In objWorksheet1.UsedRange 
    If InStr(1, c.Value, item) > 0 Then 
     c.Interior.ColorIndex = 6 
    End If 
Next 
next 


'Save Spreadsheet, 51 = Excel 2007-2010 
objWorksheet1.SaveAs tgtxlsfile, 51 

'Release Lock on Spreadsheet 
objExcel.Quit() 
Set objWorksheet1 = Nothing 
Set objWorkbook = Nothing 
Set objExcel = Nothing 

ヘッダーと凡例をスクリーンショットとして修正する必要があります。

しかし、別の方法もあります。上記のスクリーンショット(ヘッダーをマージ、境界線、フリーズ、グリッド線を削除)のようにヘッダーを作成し、下部に凡例を追加できる変更されたvbスクリプトを入手できれば、毎日既存のエクセルに書き込む必要はありません。いつでもvbsを実行すると古いExcel(存在する場合)をこの適切な形式に置き換える必要があります。

Sample Excel output

+0

のいずれかを使用して1つのコマンドですべての列を自動調整することができます.Columns.Autofit() '**とそれはあなたのためにオートフィットトリックを行う必要があります。 – ian0411

答えて

0

ヘッダと凡例を作成するマクロを記録します。 。選択...選択ステートメントをクリーンアップするためのコードを編集します。 ** `objExcel:...あなたが投稿あなたのコードでは、` objExcel.Rows(1).AutoFilter`の下に次の行を追加します。これらの

ActiveSheet.Columns("A:Q").AutoFit 
ActiveSheet.Range(Columns(1), Columns(17)).AutoFit 
+0

こんにちは@jsotolaあなたはここで、私はAutofitコードに合うべきである正確にここにコード全体を貼り付けることができます....実際に私はこれらの慣れていない... – goldenbutter

関連する問題