過去ログ

                                Page     313
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ▼ファイル名を変数に置き換えて開けますか?  KEN 02/11/7(木) 14:09
   ┗Re:ファイル名を変数に置き換えて開けます...  コロスケ 02/11/7(木) 15:41
      ┗フルパスで書く他に方法はないでしょうか?  KEN 02/11/8(金) 12:18
         ┗Re:フルパスで書く他に方法はないでしょう...  コロスケ 02/11/8(金) 17:02
            ┗有難うございます。解決しました。  KEN 02/11/8(金) 19:24

 ───────────────────────────────────────
 ■題名 : ファイル名を変数に置き換えて開けますか?
 ■名前 : KEN
 ■日付 : 02/11/7(木) 14:09
 -------------------------------------------------------------------------
   いつもお世話になっています。
Book名を変数を使用して開くにはどうしたらよいでしょうか?
たとえば
Sub Test()
Dim Book As Variant
Book = ブックA
  Workbooks.Open Filename:="c:\Book\pmp72035.csv".CSV").Close False
End Sub

だと開けません。
お願いいたします。
 ───────────────────────────────────────  ■題名 : Re:ファイル名を変数に置き換えて開けます...  ■名前 : コロスケ <corosuke@chan.co.jp>  ■日付 : 02/11/7(木) 15:41  ■Web : http://www.interq.or.jp/sun/puremis/colo/  -------------------------------------------------------------------------
   ▼KEN さん:
こんにちは。えーと、開きたいのですか?閉じたいのでしょうか?

Option Explicit

Sub Test()
  Dim BOOK As String '文字ですからString型で良いでしょう。
  BOOK = "ブックA.xls" 'カレントパスにないとエラーになりますので、
            'フルパスで書く必要があれば、パスも含めて書いてください。
  Workbooks.Open Filename:=BOOK
End Sub
 ───────────────────────────────────────  ■題名 : フルパスで書く他に方法はないでしょうか?  ■名前 : KEN  ■日付 : 02/11/8(金) 12:18  -------------------------------------------------------------------------
   ありがとうございました。

▼KEN さん:
>こんにちは。えーと、開きたいのですか?閉じたいのでしょうか?

すいません開いたり閉じたりしたかったのです。失礼しました。

  Dim BOOK As String
  BOOK = "ブックA.xls" 'カレントパスにないとエラーになりますので、         
  Workbooks.Open Filename:=BOOK
End Sub
なるほど、わかりました・・・・
でも、カレントパスって???

実はいくつかのフォルダ、例えばフォルダA,フォルダB,フォルダC...の
中にあるpmp72035.csvと言う同じ名前のデータがありまして、Aを開いて
マクロを記述してあるブックのワークシートにコピーして閉じて
今度はBを開いて先ほどコピーした行の下にコピーして閉じて
次はCを開いてそのまた下にコピーして閉じて・・・・としたいのです。
フォルダのパス名だけが変わってあとは同じパス名を使用した、
繰り返しのマクロを記述したいのです。
説明の仕方がうまくありませんが、出来ましたらお願いいたします。
 ───────────────────────────────────────  ■題名 : Re:フルパスで書く他に方法はないでしょう...  ■名前 : コロスケ <corosuke@chan.co.jp>  ■日付 : 02/11/8(金) 17:02  ■Web : http://www.interq.or.jp/sun/puremis/colo/  -------------------------------------------------------------------------
   ▼KEN さん:
こんにちは。コメント付きの簡単なサンプルコードを書いてみました。
適宜環境に合わせて変更してみてください。不明点はまた質問してくださいね。
ではー♪

Sub Test()
  '// 定数・変数宣言
  Const strCsvFn As String = "pmp72035.csv" 'CSVファイル名(固定)
  Dim strFolderN(1 To 3) As String     'フォルダまでのパス格納用
  Dim intCnt As Integer           'カウンタ用変数
 
  '//フォルダまでのパスを変数に格納する
  strFolderN(1) = "C:\フォルダA\" 'フォルダAのパス
  strFolderN(2) = "C:\フォルダB\" 'フォルダBのパス
  strFolderN(3) = "C:\フォルダC\" 'フォルダCのパス
 
  '//ループで回す
  '//詳細がわからないので、CSVを開いて、各ファイルのA1セルの値を
  '//A1からA3にコピペします。終わったらCSVを閉じます。
  For intCnt = 1 To 3
    Workbooks.OpenText Filename:=strFolderN(intCnt) & strCsvFn
    [A1].Copy ThisWorkbook.ActiveSheet.Cells(intCnt, 1)
    ActiveWorkbook.Close False
  Next
End Sub
 ───────────────────────────────────────  ■題名 : 有難うございます。解決しました。  ■名前 : KEN  ■日付 : 02/11/8(金) 19:24  -------------------------------------------------------------------------
   コロスケさん有難うございました。
やっと解決しました。
今まで同じようなコードをいくつも書いていたのが
かなりすっきりしました。
感動ものです!!
これからも宜しくお願いします。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 313