■73665 |
Re[1]: テキストファイルをExcelで処理するVBScript |
□投稿者/ 魔界の仮面弁士 -(2014/10/22(Wed) 20:18:49)
| ■No73662 (椿こはる さん) に返信 > xlWb.Close(False) この場合は、 xlWb.Close False もしくは Call xlWb.Close(False) と書くのが自然かと。
現状のコードだと、この括弧は Call xlWb.Close( (False) ) に相当する意味になりますよ。
> 1. フォルダを動かすとパスを変更する必要がある
このパスとは「※注意」のある > Set ELBook = xlApp.Workbooks.Open("D:\集計VBS\集計.xlsm") > ELBook.SaveAs "D:\集計VBS\結果\"& txtTitle &".xlsx",51 のことですよね。
(案1) VBScript ファイルの位置からの相対パス指定の場所に出力するようにする。 http://www.happy2-island.com/vbs/cafe02/capter00105.shtml
(案2) 基準パスを、Const でコード先頭に定義しておく。
(案3) パス指定を、レジストリや外部ファイルなどで定義するようにしておく。
> 2. 本当はCurrentRegionではなく、「Ctrl+Shift+→」&「Ctrl+Shift+↓」を選択したい(Selectionを使用せず実装する方法が分からず) こんな感じかな。
Const xlDown = &HFFFFEFE7 Const xlToRight = &HFFFFEFBF Set rangeTopLeft = 範囲内の左上セルのRange Set rangeArea = rangeTopLeft.Worksheet.Range(rangeTopLeft, rangeTopLeft.End(xlToRight)) Set rangeArea = rangeTopLeft.Worksheet.Range(rangeArea, rangeTopLeft.End(xlDown)) 'rangeArea.Select
> 3. 別名保存しないで複数ファイルを開きたい ドロップした複数ファイルの情報を、一つの 集計.xlsm 内に 取りまとめたいというのであれば、こういう感じかな。
【修正前】 For Each 〜 : Set xlWb = xlApp.Workbooks.Open(txtFile) : Set ELBook = xlApp.Workbooks.Open("D:\集計VBS\集計.xlsm") : xlWb.Close False : ELBook.SaveAs 〜 : Next
【修正後】 Set ELBook = xlApp.Workbooks.Open("D:\集計VBS\集計.xlsm") For Each 〜 : Set xlWb = xlApp.Workbooks.Open(txtFile) : : xlWb.Close False : Next ELBook.SaveAs 〜
そういう意味ではなく、集計.xlsm を複数開きたい、という意味であれば、 Workbooks.Open ではなく、Workbooks.Add を使えば OK です。 |
|