こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

VBA 開いているブックの場所

ExcelでVBAを利用して、フォルダ(c:\"VBA練習")に置いてあるExcleの内容を、開いているExcleに自動読取り作業をするために、下記のようなコードを記述しました。(正常に動作します)

そこで、ご相談なのですが、現在は特定のフォルダ(c:\"VBA練習")にExcelを置かないと読み取りは実現しません。ですが、開いているBookが置いてある"場所"にあるExcelを読み取りたい場合、どのように書き換えれば宜しいでしょうか?

ご教授いただけると助かります。宜しくお願いします。
--------------------------------------------------------------
Private Sub 読込ボタン_Click()

Dim myDir As String, myName As String, myBook As Workbook
Dim copydata As Range, GYO As Range
Dim SH2 As Worksheet, SH1 As Worksheet

Set SH2 = ThisWorkbook.Worksheets("情報シート")

'集計用のブックがあるフォルダ名を指定
myDir = "C:\VBA練習"
myName = Dir(myDir & "\" & "*.xls")
Do While myName <> ""
Set GYO = SH2.Range("A65536").End(xlUp).Offset(1)

'(1)指定した名前のブックを開いて変数に格納する
Set myBook = Workbooks.Open(Filename:=myDir & "\" & myName)

'(2)転記元を取得する
Set SH1 = myBook.Worksheets("回答内容")
Set copydata = SH1.Range("Z1").Resize(100, 1)

'(3)転記先に貼り付ける
copydata.Copy
GYO.PasteSpecial Paste:=xlPasteValues, Transpose:=True

'(4)開いたブックを閉じる
myBook.Close
myName = Dir()
Loop

End Sub
--------------------------------------------------------------

投稿日時 - 2009-04-13 11:47:31

QNo.4875551

困ってます

質問者が選んだベストアンサー

単にループ中に自分自身とおなじパスかをチェックすればいいのでは?

>Do While myName <> ""
の下に
If myName <> ThisWorkbook.Name Then


>myName = Dir()
の上に
End If

投稿日時 - 2009-04-13 12:23:24

お礼

ありがとうございます!
とても綺麗に仕上がりました!!

投稿日時 - 2009-04-13 13:03:05

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

myDir = ThisWorkbook.Path

と言う事?

投稿日時 - 2009-04-13 11:52:22

お礼

myDir = ThisWorkbook.Path
で読み込めました!!ありがとうございます!

投稿日時 - 2009-04-13 11:55:38

ANo.1

ThisWorkbook.Path
を使ってみては。

投稿日時 - 2009-04-13 11:51:22

お礼

myDir = ThisWorkbook.Path
で読み込めました!ありがとうございます!

追加で宜しいでしょうか?
開いているブックも読み込みの対象になってしまうのですが、開いているブック自体は対象外にする場合はどのように記述したら宜しいのでしょうか?

宜しくお願いします。

投稿日時 - 2009-04-13 11:57:09

あなたにオススメの質問