ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

EXCEL VBAコミュの[質問]同じBOOK名の処理について

  • mixiチェック
  • このエントリーをはてなブックマークに追加
ブラウザで操作を行うシステムから出力されるWorkBookをEXCELのVBAで加工しようとしています。
(余分なレコードを削除したり、文字列を取得したりします)

そのシステムでは「ファイル作成」というボタンをクリックすると、Excelが立ち上がりデータが表示されるようになっております。

出力されるファイルは1つではなく2つ以上存在する可能性があります。

そこでファイル名の取得に

Dim wb As Workbook
Dim Data() As String
Dim strName As String

ReDim Data(0) as String

For Each wb In Workbooks
Data(Ubound(Data))= wb.Name
ReDim Preserve Data(Ubound(Data)+1)
Next

という処理を行っております。

上記で取得したBOOK名を使用して
?strName = Workbooks(Data(i)).Sheets(1).Range("A5").Cells.Value
などで文字列を取得しています。

システムが出力されるBOOK名が異なるものであれば問題ないのですが、
同じBOOK名の場合があります。
開かれているのは以下のような感じです。
データシート[1].xls
データシート[1].xls
データシート[1].xls
データシート[2].xls
データシート[2].xls
集計結果ファイル.xls ←ここにVBAを記述しております。

その場合、?の処理は最初のBOOKに対してしか処理を行わず、同じBOOK名の次以降のファイルの処理を行うことができません。

それぞれのファイルは
C:\Documents and Settings\ユーザ名\Local Settings\Temporary Internet Files\○○○○\XXXXXX
(XXXXXXは様々でした)
に仮保存されいるようです。

Data() = wb.FullName
にしてフルパスを取得してみましたが、?の処理ではフルパスを指定すると
「インデックスが有効範囲にありません」と表示されます。

少しWEBを検索してみたら違うフォルダにあっても同じBOOK名は開けないと書いてあるとの事ですが・・・

各ファイルのインデックス番号が取得できれば解決するのかと思いますが、その手法もわかりません。

このように同じBOOK名で複数開かれている場合、それぞれのBOOK内容を参照したい時はどうすればよろしいのでしょうか?

コメント(9)

ん?
そもそも、同じbook名で、複数開けるのか?


検討違いだったら、ごめんなさい。
すごい単純かもしれないけど、

Sub Macro1()

Dim a As Integer

For a = 1 To 5

ChDir "C:\Documents and Settings\○○\デスクトップ" (←どこかのディレクトリーであれば)
ActiveWorkbook.SaveAs Filename:=a

Next a
End Sub

○○はユーザーさんの名前とか。


でやったら、
わたしの場合はデスクトップでやったので、
デスクトップに
1.xls
2.xls
3.xls
4.xls
5.xls
って名前が変わって、ファイルが5個できたよ。

これでは、ダメなんですか?
> いなぞーさん

同感です。

やはり、
一旦 新しいファイルを作って、コピーすべき
だと思います。

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

EXCEL VBA 更新情報

EXCEL VBAのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。