海外旅行から帰ってきたら、まず何を食べる?

VBA(エクセル)で教えて下さい。開いていないBOOKのシートを開いているBOOKのシートに貼り付けで、開いているBOOKから開いていないBOOK名を指定したいのですが、

現在開いているエクセルです。
SHEETS(Type)のRANGE(A1)に閉じているBOOK名を入力します。
SHEETS(In)に閉じているBOOKのSHEETSを貼り付けたいのですが、
Ex = Sheets("Type").Range("A1")  が無いと閉じているEx.xlsを貼り付けます。
このExと言うBOOK以外も多々コピーしたいのですが、どのように書けば良いか分からず、

是非、教えて下さい。

Sub a1()
Dim wsSrc As Worksheet, WS As Worksheet
Dim PasteR As Range
Dim x As Long

Sheets("In").Select
Cells.Select
Selection.Delete Shift:=xlUp
Range("A1").Select
'If Worksheets(1).Name = "STEP1" Then
' Worksheets(1).Activate
' Cells.ClearContents
' Else
'Worksheets.Add(Before:=Worksheets(1)).Name = "一覧"
'End If

  Ex = Sheets("Type").Range("A1")

  Set wsSrc = ActiveSheet
Workbooks.Open "C:\WINDOWS\デスクトップ\test\Ex.xls"
For Each WS In Worksheets
x = WS.Range("A1").CurrentRegion.Rows.Count
If WS.Index = 1 Then
Set PasteR = wsSrc.Range("A1")
Else
Set PasteR = wsSrc.Range("A65536").End(xlUp).Offset(1)
End If
WS.Range(WS.Cells(1, 1), WS.Cells(x, 44)).Copy PasteR
Set PasteR = Nothing
Next
ActiveWorkbook.Close False
Set wsSrc = Nothing
End Sub

A 回答 (3件)

ご質問の意図をつかみ損なっているかもしれないので、見当違いかもしれませんが。



>SHEETS(Type)のRANGE(A1)に閉じているBOOK名を入力します。

で、その名前のブックを開くのなら

Dim Ex As String
Ex = Sheets("Type").Range("A1").Text
Workbooks.Open "C:\test\" & Ex & ".xls"

とすればいいのではないでしょうか。

#はずしていたらすみません。
    • good
    • 0
この回答へのお礼

ありがとうございます。

Sheets("Type").Range("A1").Text
に入力したBOOK名がOPEN致しました。

お礼日時:2003/06/09 14:11

こんにちは。



提示されたソースを見る限り、 Ex に代入された Sheets("Type").Range("A1") のデータは何にも使われてないですよ。

特定フォルダ内にあるファイルを扱うなら、既に#1さんが回答を出されています。
そうじゃないならフルパスで指定するようにするか、処理時にファイルを指定させるか、、、でしょう。

Sub aaa()
Dim FName
 FName = Application.GetOpenFilename("Excel(*.xls), *.xls")
 If FName <> False Then
  Workbooks.Open FName
  '処理
 End If
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございます。
特定フォルダ内なのですが、後編フルパス指定時の
ファイルの所得方法も学べて、プラスαです。
勉強になりました。

お礼日時:2003/06/09 14:14

私の場合、c:\My Documentsにbbb.xlsとccc1.xlsがあります。

新規に開いたエクセルのsheet1のA1:A2に
bbb.xls
ccc1.xls
と入力しています。
そしてsheet2,sheet3があります。iを増やすなら
予め増やしておくか、ActiveWorkbook.Sheets.Addが
必要でしょう。
そういう下で
Sub test01()
For i = 1 To 2
b = Worksheets("sheet1").Cells(i, "A")
MsgBox b
n = ActiveWorkbook.Name
Workbooks.Open "c:\my documents\" & b
ActiveWorkbook.Worksheets("sheet1").Activate
ActiveSheet.Range("a1:h10").Copy
Workbooks(n).Worksheets("sheet" & (i + 1)).Activate
Range("a1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Workbooks(b).Close
Next i
End Sub
を実行するとSheet2,Sheet3にbbb.xlsのsheet1,
ccc1.xlsのSheet1をそれぞれコピーしました。
Activeの使い方やRangeのコピーを使っている点など
をご参考になれば。ただし危ない橋を渡っている気がするので、更に拡張してご質問者のやりたいようにするには
難題が待ちうけているかもしれませんがよろしく。
・Activeのこと・Pasteのこと・保存するまでのファイル名の問題など知りたいのですが、私の理解が十分でないことを認識しています。
    • good
    • 0
この回答へのお礼

今回BOOK名は不特定で指示したBOOKをシートにコピーする
形を作成したかったので、
1・3の方と合わせて作成します。

本当にありがとうございました。

また皆様、お礼が遅れまして申し訳ございませんでした。

お礼日時:2003/06/09 14:18

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報