|
分類:[VBScript]
初めまして、よろしくお願いします。
現状、件名のようなテキストファイル(SSV)をエクセルで処理するスクリプトを組み、
一応動作させることはできたのですが、細々と問題点を残しております。
自分とグーグル先生の力だけでは解決できなかったので、
こちらで皆様のお知恵をお借りしたく存じます。
■開発環境
Windows8.1pro、コーディングにはメモ帳を利用しており、Office2013をインストール済みです。
■プログラム内容
とあるソフトか吐き出したテキストファイル(SSV)を
VBSファイルにドラッグ&ドロップすることで
Excelで開き、特定の文字列を検索し、その下の表をコピー、
あらかじめ用意したワークシートに貼り付け、
そのワークシートで行う操作のマクロを実行し、
テキストファイルと同名のExcelファイルとして保存する
コードここから
−−−−−−−−−−−−−−−−−−−
Option Explicit
If Wscript.Arguments.Count > 0 Then
Dim txtFile
Dim xlApp
Dim xlWb
Dim args
Set args = Wscript.Arguments
Set xlApp = Wscript.CreateObject("Excel.Application")
xlApp.Visible = True
For Each txtFile in args
Set xlWb = xlApp.Workbooks.Open(txtFile)
With xlWb.Worksheets(1)
.Columns("A:A").TextToColumns .Range("B1"), 1, 1, True, False, False, False,True,False
'開始位置,区切り文字,二重引用符,連続を一つに,タブ,セミコロン,コンマ,スペース,その他
.Range("A1").EntireColumn.Delete
End With
Dim objFileSys
Dim txtTitle
Set objFileSys = CreateObject("Scripting.FileSystemObject")
txtTitle = objFileSys.GetBaseName(txtFile)
Set txtFile = Nothing
Dim objEvent
Set objEvent = xlWb.Worksheets(1).Cells.Find("任意の文字列", , , , , , False,False,False)
Set objEvent = objEvent.Offset(2, 0)
Set objEvent = objEvent.CurrentRegion
Dim ELBook
Dim ELSheet
Set ELBook = xlApp.Workbooks.Open("D:\集計VBS\集計.xlsm")
'フォルダを動かしたらパスを書き換える※注意1
Set ELSheet = ELBook.Worksheets("EventList")
objEvent.copy ELSheet.Range("A1")
ELSheet.Range("A2") = "ID"
xlApp.Run "Sheet1.set_ID"
Set objEvent = Nothing
xlWb.Close(False)
Set xlWb = Nothing
xlApp.DisplayAlerts = False
ELBook.SaveAs "D:\集計VBS\結果\"& txtTitle &".xlsx",51
xlApp.DisplayAlerts = True
'保存先の指定※注意2
Set objFileSys = Nothing
Set txtTitle = Nothing
Set ELBook = Nothing
Set ELSheet = Nothing
Next
Set args = Nothing
Set xlApp = Nothing
Else
Wscript.Echo "ファイルを選択してください"
Wscript.Quit
End If
−−−−−−−−−−−−−−−−−−−
コードここまで
■問題点
1. フォルダを動かすとパスを変更する必要がある
2. 本当はCurrentRegionではなく、「Ctrl+Shift+→」&「Ctrl+Shift+↓」を選択したい(Selectionを使用せず実装する方法が分からず)
3. 別名保存しないで複数ファイルを開きたい
(ファイルを保存する必要が無い場合もあり、単数のファイルの処理の場合のスクリプトは組めたが、45行目辺りの開いたワークブックを別名で保存する処理が無ければ、複数のファイルを処理できない)
この場にそぐわぬ初心者で、質問にも至らぬ点があるかと思いますが、
よろしくお付き合いいただければ幸甚です。
|