• ベストアンサー
  • 暇なときにでも

excelで最初に開いたファイル名称を覚えておく様な処理は可能ですか?

excelで最初に開いたファイル名称を覚えておく様な処理は可能ですか? 1.最初の処理 (1)A.xlsのファイルを開く (2)マクロ:2010.xlsのファイルを開く (3)マクロ:チェックのシートをA.xlsの明細のシートの前に追加 (4)マクロ:チェックのシート名称をコピーした日付と時間のシート名に変更 (5)マクロ:2010.xlsのファイルをディスクトップ上から削除 2.後から追加する処理 (6)B.xlsのファイルを開く (B.xlsは、A.xlsとは異なるフォルダを作成し、A.xlsの特定のセルの中身の名称でファイル名保存されます。名前が異なるだけでマクロの中身はA.xlsと同じ) (7)マクロ:2010.xlsのファイルを開く (8)マクロ:チェックのシートをB.xlsの明細のシートの前に追加 (9)マクロ:チェックのシート名称をコピーした日付と時間のシート名に変更 (10)マクロ:2010.xlsのファイルをディスクトップ上から削除 上記を対応する為に下記の様なマクロ((6)(7)の部分を抜粋)を設定しています。 '2010.xlsのファイルを開く(2010.xlsのファイルは適宜、ディスクトップにコピーされます) Workbooks.Open FileName:="C:\Documents and Settings\ID\デスクトップ\2010.xls" 'チェックのシートを現在のブックの明細の前にコピーする。 Windows("2010.xls").Activate Sheets("チェック").Copy before:=Workbooks(1).Sheets("明細") 単独でA.xlsやB.xlsのファイルが開かれている場合には、 上記の対応で問題ないのですが、A.xls、B.xls以外のexcelファイルが開かれていると、 実行時エラーが出てしまいます。 Workbooks(1)の部分で最初に開いたexcelのファイル名称を指定しているのが 影響しているのはわかるのですが、ここの処理をなんとかしたいというおもいです。 つまり、複数のexcelファイルが開かれていて、A.xlsやB.xlsのファイルを後から開いても エラーがでない様にするには、どの様な処理にしたらよいのか教えて頂きたく。 マクロを実行したexcelのファイル名を覚えておいて、その名前が(1)に置き換わる 様な処理が望まれる処理です。

共感・応援の気持ちを伝えよう!

  • 回答数1
  • 閲覧数203
  • ありがとう数1

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

  • ベストアンサー
  • 回答No.1

>チェックのシートを現在のブックの明細の前にコピーする。 >Windows("2010.xls").Activate >Sheets("チェック").Copy before:=Workbooks(1).Sheets("明細") "現在のブック" が当マクロが書かれているブックなら Sheets("チェック").Copy before:=ThisWorkbook.Sheets("明細")

共感・感謝の気持ちを伝えよう!

質問者からのお礼

早々に回答頂きありがとうございました。 結果はばっちりでした。m(__)m

関連するQ&A

  • ブックの保護(シート構成) でシートのコピー

    エクセルで外部データを参照させるために, 別のブックを開きシートをコピーし元のブックに貼り付け別のブックは閉じるというマクロを作成しました。 Workbooks.Open Filename:=a Sheets("データ").Select Sheets("データ").Copy After:=Workbooks("ファイル.xls").Sheets("メニュー") Workbooks(a).Close SaveChanges:=False a(変数)というファイルを開く シートのデータを選択 データをコピーし ファイル.xls のメニューシートの後に貼り付け a(変数)のエクセルファイルを保存せずに閉じる 動作としては正常に動きました。 しかし、この ファイル.xls には ID とパスワードで管理しています。 その管理したシートがあるんですが、それを表示させないために シートを非表示→ブックの保護→シート構成 を行いました。 マクロを動かすと、シート構成をしているので Sheets("データ").Copy After:=Workbooks("ファイル.xls").Sheets("メニュー")  が動かないことに気が付きました。 何かいい方法があればご教授お願いします。

  • VBAのブックやシートのアクティブ化について質問です。

    元ファイルに格納されているマクロを実行すると、 他のエクセルファイルを開いて、 そこから必要な情報を収集して元ファイルに集める… というマクロをいま組んでいるのですが、 他のエクセルファイルを開いたら、 そのファイルはアクティブになるはずで、 それ以下に記述の処理は、元のファイルを触らない限り、 当該他のファイルに対して行われると思っているのですが、 元ファイルが処理されていします。 なので、現在、記述する際には、 以下のようにブック名とシート名から指定しています。 Workbooks(BookBango & ".xls").Sheets(2).Range(Workbooks(BookBango & ".xls").Sheets(2).Cells(1, 1), Workbooks(BookBango & ".xls").Sheets(2).Cells(paste_counter, 3)).Copy … これで一応動くは動くのですが、 とても冗長ですし、ミスを誘いやすく、修正が大変ですので、 解決したいのですが、 どうにも解決法が分かりません。 不勉強で申し訳ありませんが、どうかご指導下さい。 お願いします。

  • エクセルのシートのコピーについて

    シートのコピーをVBAで行いたいのですが、エラーになってしまいます。 間違っている箇所が分からないのでご教授お願いします。 貼り付けというブックにマクロが組まれています。 ”データ”のブックにあるシート名が”貼り付けのブックのリスト”のシートに記載されています。 リストのシートに記載されているシートを貼り付けのブックにコピーしたいです。 よろしくお願いします。 Sub シートコピー() 行数 = 2 Do Until IsEmpty(Cells(行数, 3).Value) コピー元 = Workbooks("貼り付け.xls").Worksheet("リスト").Cells(行数, 3) Workbooks("データ.xls").Worksheet(コピー元).Copy After:=Workbooks("貼り付け.xls").Sheets(Workbooks("貼り付け.xls").Sheets.Count) 行数 = 行数 + 1 Loop End Sub

  • エクセル bookの名称

    Sub 登録() Workbooks.Open Filename:= _ "\\buckup1\センタ\データ\連絡をください\シート.xls" Windows("入力.xls").Activate Sheets("管理").Select Sheets("管理").Copy Before:=Workbooks("シート.xls").Sheets(1) End Sub 上記はマクロの自動記録で行ったものですが、このマクロが入ってるbookを名前を変えて保存して(例えば"顧客管理"など)上記を実行すると、上記3行目のbookの名前でないのでエラーが出てきます。上記のbookを名前を変えて保存すると3行目の部分もそれに合わせて自動で変わるように(入力→顧客管理)出来ますでしょうか。

  • エクセルマクロ ファイル名を変更したとき

    マクロ初心者です。 データファイルからシートを複写挿入するマクロです。 コピー先ファイル名を都度変更したいのですが、その場合マクロにコピー先ファイル名が入っているのでエラーになります。名前が変わっても実行できるようにするにはどうしたらよいのでしょう? なお、複写元のデータファイルは複写後に閉じます。 Workbooks.Open Filename:="データファイル.xls" Sheets("Sheet1").Copy Before:=Workbooks("コピー先ファイル名.xls").Sheets(1)

  • EXCEL VBAで思ったように動いてくれないのですが。

    度々すみません。お世話になります。Win98-EXCEL2000での処理です。 やりたいことは、A~Eまでのファイルを変数で開き、各ファイルの総シート数の1/2のシート数のシート(1)~シート(?)までを処理し、1つ目のファイルのシート処理が終わった段階で合計をして、別シートに合計のみを転記、次のファイルの処理へ移動したいのです。 WithやLoopの使い方や、SETやNextはどこで書いていいのかがよく解っていないので、何をどこでどう書いてよいのか教えてください。多分意味不明だと思うので、補足しますのでお願いします。今の処理だとSheetYOの合計処理がすっ飛ばされているような気がします。 Sub TEST() 各種変数宣言 For iii = 1 To 4 If iii = 1 Then f = "A_log" ElseIf ・・・残りB~Eまで入力 Exit For End If Next iii Workbooks.Open Filename:=f & ".xls" c = Worksheets.Count / 2  With sheetSET Set sheetSET = Workbooks(f & ".xls").Sheets(iiii) Set sheetYO = マクロを書いているファイルです。 Do Until iiii = c For iiii = 1 To c   If iiii = 1 Then      オートフィルタ処理 Sheets(iiii).AutoFilter.Copy sheetYOにコピー処理 Else 上記と同じオートフィルタ処理 Sheets(iiii).AutoFilter.Range.Offset(1, 0).Copy 上記の最終行+1にコピー処理 Exit For End If Next iiii Loop End With With sheetYO    別シートに合計のみを転記 End With Workbooks(f & ".xls").Close False End Sub

  • EXCELのVBAで質問があります。

    EXCELのVBAで質問があります。 次の処理を実現しようと、  1.テンプレート的なファイルを用意する。  2.作業ファイルの作業シート(VBA組み込み有)を    初期化するために「1」のファイルからセルをコピーする    ※マクロがあるため、単純なシートコピーは出来ない 以下のようにコーディングしました。  objXls = CreateObject("Excel.Application")  objXlsWorkBook = objXls.Workbooks.Open("C:\Template.xls")  objXlsSheet = objXlsWorkBook.Sheets("テンプレートシート")  objXlsSheet.Range("1:10").Copy  ActiveWorkbook.Worksheets("作業シート").Range("1:10").PasteSpecial すると、コピーした内容がオブジェクト(図)として貼り付けられました。 どうすればオブジェクトではなく、セルとしてコピーが可能になるのでしょうか。 「Workbooks.Open("C:\Template.xls")」としてもいいのですが、 ファイルが見えてしまうのが都合が悪いのです。 どうかよろしくお願いします。

  • エクセル VBA マクロを動かしたときに元々開いているファイルを閉じる・・・

    いつも皆様には大変お世話になっております。 早速質問ですが、 「もしこのマクロが動く時点で他のExcelファイルが開いていたら、警告の上 自ファイルを閉じる、開いていなければ~実行」 という処理をかませたいと思っております。 ここの判定の方法がわかりません。(既にExcelが起動されていたら、でもいいのでしょうか。。。?) 下記のようなマクロを組んでいるので 他のファイルが開いていると厳しい状況です。 bname = "C:\" & Format(Range("q1").Value, "yyyymmdd") & "サンプル" & ".xls" ActiveWorkbook.SaveAs bname Workbooks.Open "C:\サンプル.xls" Workbooks(1).Close 本当は"yyyymmdd"&"サンプル"&".xls"ファイルだけ閉じられればいいのですが、自分の知識では上記のような形でしか動かせません;; もしご存知の方、ご教示ください。よろしくお願いします

  • エクセル ブック間コピー マクロ

    ブックA(ブック名は固定)のシートA(シート名は毎回違います)を ブックB(ブック名は固定)の一番左へコピーしたいのですがうまくいきません。 動作 :シートAでマクロを実行しブックBへシートのコピー(挿入)します。 まず第一段階のブックAのシートAをブックBへのコピーがうまくいきません。 シートAが固定シート名ならコードは Sheets("A").Select Sheets("A").Copy Before:=Workbooks("B.xls").Sheets(1) ですが・・・・ Sheets("A").SelectをWith ActiveSheet.Selectにすれば良いのですか? 申し訳ないのですが、後教授お願いします。

  • Excelのマクロで、CSVファイルの内容を性格にコピーさせたい

    マクロで、選択したCSVファイルの内容をExcelにコピーさせようとしています。(csvFileName = CSVファイルの名前、MyFileName = コピー先のExcelファイル名) Workbooks(csvFileName).Activate Sheets(1).Select Sheets(1).Copy after:=Workbooks(MyFileName).Sheets(1) 以上のような物なのですが、ここで困った事が起きました。 CSVの中に、1-1などと書かれているセルがあるのですが、これをExcelで開くと自動的に1月1日となってしまいます。 1-1という文字列のまま、コピーさせたいのですが、何か方法はありますでしょうか?