- ベストアンサー
シート名と同じブックを開くVBA
- VBAを使用して、特定のフォルダ内にあるシート名と同じ名前を持つブックを開く方法について質問です。
- 現在、「新しいフォルダ」というフォルダ内の「りんご」という名前のブックを開くことに成功しています。しかし、さらに応用して、アクティブワークブックのシート名と同じ名前を持つブックも開きたいです。
- シート名は「りんご」だけでなく、「みかん」やその他いくつかの名前もあります。VBA初心者なので、なるべくコードを変更せずに実装する方法を教えてください。
- みんなの回答 (4)
- 専門家の回答
関連するQ&A
- ブックを開いて閉じるVBA
初めまして、ブックを開いて閉じるループのVBAについて質問させてください! 別添の画像のようなブックAの中に、「りんご」のように名前のついたシートが複数あります。(この数は変動します。来月は「ぶどう」が入るかもしれないし、「りんご」がなくなるかもしれません。) そして「新しいフォルダ」という名前のフォルダに、別添の画像のようにいくつかブックAのシートの名前を含むファイルが入っています。別添画像のように、シートの名前は必ず含むものの、ファイル名はバラバラで、「すもも」のようにシートにはないものもあります。そして、「みかん」のようにシートにあるのにファイルがない場合もあります。 このうち、ブックAに存在するシートの名前を含むファイルのみ開いて閉じるというループのVBAを入力したいのですが、どうすればよいのでしょうか…?!ちなみに、「すもも」のようにブックAに存在しないシートの名前のファイルは開かないでおきたいです。 「みかん」のようにシートはあるがファイルがない場合は、エラーを出さずそのまま次の処理をすすめたいです。 ちなみに、「新しいフォルダ」の存在する場所は 「C:\Users\PC〇〇〇\Desktop\新しいフォルダ\」です。 VBA初心者なので、なるべく簡素なものにしたいと思っています。 ご助力いただけると大変嬉しいです…!よろしくお願いいたしますm(_ _)m
- 締切済み
- Excel(エクセル)
- VBAでブック名の拡張子を除去してシートにコピー
VBA初心者でコード作成で困っております。 下記の通りコードを組みましたが、シート名をブック名に変更して 保存したいのですが、このコードですと拡張子までついてしまいます。 拡張子を除去するためにはどうすればよいでしょうか? アドバイス宜しくお願い致します。 Sub test() 'シート名の変更 Dim MyPath As String Dim MyFile As String Dim Wb As Workbook MyPath = "C:\TEST\" MyFile = Dir(MyPath & "*.xlsx") Do While MyFile <> "" Set Wb = Workbooks.Open(MyPath & MyFile) ActiveSheet.Name = ActiveWorkbook.Name Application.DisplayAlerts = False Wb.Save Application.DisplayAlerts = True Wb.Close (False) MyFile = Dir() Loop End Sub
- ベストアンサー
- オフィス系ソフト
- VBAで複数シートをまとめたい
VBAを作るのは今回が初めてで行き詰ってしまいました。 フォルダ内の「.xlsx」4つのファイルのSheet1(4つともSheet1です) を統合.xLsmの1月シートのb2~値でコーピー貼り付けを行いたいのですが、 下記のものでやっていけば出来のかなと思ってますが、ご教授お願い致します。 Private Sub CommandButton1_Click() Dim sFile As String Dim sWB As Workbook, dWB As Workbook Dim dSheetCount As Long Dim i As Long Dim c As Long Dim ws As Worksheet Debug.Print (ws.Index) Const SOURCE_DIR As String = "C:\Users\KWEUSER\Desktop\data\" Application.ScreenUpdating = False '指定したフォルダ内にあるブックのファイル名を取得 For c = 1 To 4 sFile = Dir(SOURCE_DIR & "*.xlsx") 'フォルダ内にブックがなければ終了 If sFile = "" Then Exit Sub '集約用ブックを作成 Set dWB = Workbooks.Add '集約用ブック作成時のシート数を取得 dSheetCount = dWB.Worksheets.Count Do 'コピー元のブックを開く Set sWB = Workbooks.Open(Filename:=SOURCE_DIR & sFile) 'コピー元の c (1,2,3,4,5)シートを集約用ブックにコピー sWB.Worksheets(c).Copy After:=dWB.Worksheets(dSheetCount) 'シート名をファイル名に ActiveSheet.Name = sFile 'コピー元ファイルを閉じる sWB.Close '次のブックのファイル名を取得 sFile = Dir() Loop While sFile <> "" '集約用ブック作成時にあったシートを削除 Application.DisplayAlerts = False For i = dSheetCount To 1 Step -1 dWB.Worksheets(i).Delete Next i Application.DisplayAlerts = True '集約用ブックを保存して閉じる dWB.SaveAs Filename:="C:\Users\KWEUSER\Desktop\data\" & c & ".xlsx" dWB.Close Next Application.ScreenUpdating = False End Sub
- 締切済み
- Visual Basic
- ブックCloseでVBAが続かない
エクセル2002を使用しています ブック(A)をコピーして名前(B)をつけて別ブックで保存しました ブック(A)を呼び出し後、ブック(B)を閉じてブック(A)のVBAを継続したいのですが 継続しません 作成したモジュールは以下です Application.DisplayAlerts = False '【不要なシートを削除する】 Sheets(Array("注文書入手差異表", "入手予定履歴", "main", "営C")).Select ActiveWindow.SelectedSheets.Delete '【ThisWorkbook.Pathの『注文書確認フォルダ』の中に、名前をつけて別ブックで保存する ' …ユーザーフォームを使用するのでマクロごと保存】 Dim myFolder As String Dim Filename As String myFolder = ThisWorkbook.Path & "\注文書確認フォルダ" Filename = Format(Date, "yyyymmdd") & "注文書入手予定表" If Dir$(myFolder, vbDirectory) = "" Then MkDir myFolder End If ActiveWorkbook.SaveAs Filename:= _ myFolder & "\" & Filename Application.DisplayAlerts = True '【保存した別ブック名を再取得】 Dim myName0 As String myName0 = ThisWorkbook.Name '【コピー元のファイルを開く】 Dim myPath As String myPath = Application.Substitute(ThisWorkbook.Path, "\注文書確認フォルダ", "") Workbooks.Open (myPath & "\" & "注文書入手予定表") MsgBox "【注文書確認フォルダ】の中に別ブックが作成されました" '【保存した別ブックを閉じる】 Workbooks(myName0).Activate Windows(myName0).Activate ActiveWorkbook.Close '******下のマクロが続かない***************** '====================== Call Macro6 '====================== VBA ステップインで原因を探ろうとしたのでですが 「中断モードでは入力できません」のメッセージがでて デバッグができません 八方ふさがりの状態です。助けていただけませんか。
- ベストアンサー
- オフィス系ソフト
- vba ブック間でシート名のコピーをするには
始めまして、よろしくお願いします。 excel vba 初心者のものです。 2つのブックがあり同時に開いている状態です。1つのブックはデータがあります。 もう1つは空のブックです。 データのあるブックのシートには、 シート1のシート名は「8月1日」 シート2のシート名は「8月2日」 シート3のシート名は「8月4日」 シート4のシート名は「8月5日」 シート5のシート名は「Sheet1」 やりたいこと データ、シート名があるブックから、 空ブックのシートにシート名をコピーしてきてセルに貼り付けたいです。 シートに名前を付けてるシート数は不規則なので「Sheet1」まで来たら終了したいです。 どうぞご教授の程よろしくお願い申し上げます。
- ベストアンサー
- Excel(エクセル)
- Excel 複数ブックを1つのシートにまとめる
フォルダ内のワークブック約2,000個のデータを1つのシートにまとめたいのですが、VBAの勉強を始めたものの時間ばかりかかってなかなかうまくいかないので、ご指導をお願いいたします。 コピー対象の各ブック内のデータは以下の通りです ・シートは一番左端のもの1つ ・データの行数はバラバラで終端行の検出基準は「J列」 ・データの列は12列で固定 上記のようなデータをまとめ用の新規ブックを作って、1つのシートに全ブックのデータを加算してコピーをしたいです。 コピー対象の各ブックのシート名などは要りません。 ご教示よろしくお願いします。
- ベストアンサー
- Visual Basic
- 別ブックへシートコピーでシート名が違う名
別ブックへシートコピーでシート名が違う名前でコピーされてしまします。 環境 : エクセル2010 windows7 home (1)WEBページからコピーしてきたねたを、貼り付けCSVにして保存したいのです。 (2)ユーザーフォームからフォルダに名前を付けてデスクトップにフォルダを新規作成します。 (3)で、CSVにしたファイルを上記新規フォルダ内に保存したいのです。 問題点: 新規ブックをAddしているのですが、シート名も元のブックからコピーできているはずが、指定している保存先の名前になってしまいます。(変換後CSVファイル)になってしまう。 本当は(変換)となるはずなんですが・・・その時、Beforeでシート1の左にくるはずが、なぜか上記間違った名前のシートのみになってしまいます。 あと、これをパスを替えてほかのXPのPCで走らせると、(1)でコピペしたねたが消えてしまいます。 (保存はできますがねたがないと・・・) 上記問題点を解決したいのでどなたかどうぞご教授ください。 構文 Private Sub CommandButton1_Click() Dim a As Object Dim b As String Set a = CreateObject("Scripting.FileSystemObject") b = "C:\Users\Owner\Desktop\" & Me.TextBox1.Value 'フォルダ作成 If MsgBox("入力内容に間違いはありませんか?", vbYesNo) = vbYes Then a.Createfolder b Else Me.TextBox1.SetFocus Exit Sub End If 'フォルダ作成 その中に CSV保存 Dim ws As String Dim oWbk As Workbook Set oWbk = Workbooks.Add ws = "変換" Workbooks("suzuki csv 変換.xlsm").Worksheets(ws).Copy Before:=oWbk.Worksheets("Sheet1") oWbk.SaveAs Filename:="C:\Users\Owner\Desktop\" & Me.TextBox1.Value & "\変換後CSVファイル.csv", FileFormat:=xlCSV, CreateBackup:=False oWbk.Close SaveChanges:=True Unload Me Workbooks("suzuki csv 変換.xlsm").Activate Columns("A:H").Select Selection.ClearContents Rows("1:3").Select Selection.Delete Shift:=xlUp Range("A1").Select Dim w As Workbook '全ての Book を保存する For Each w In Workbooks w.Save Next 'Excel を終了する Application.Quit 'Book を閉じる ThisWorkbook.Close False End Sub 作業途中で構文が荒れていますが、ご容赦ください。
- 締切済み
- その他MS Office製品
- ブック間のシート移動
EXCEL VBA初心者です。 ブックAのシートAをブックBのシートの一番左側に移動させようと思います。 以下を実行するとエラーが出ますがなぜでしょうか? エラーの原因と対策方法を教えて下さい。 Sub シート移動() Worksheets("シートA").Move _ Before:=Workbooks("ブックB.xls").Sheets(1) End Sub ブックAはブック名が毎回変わります。 ブックAはメール添付を開いたブックです。 ブックAはシートがシートAしかありません。 シートAは名前が変わりません。 マクロコードはブックBあるいは個人用マクロブックに置きます。 よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- Excel VBA 非表示の別ブックへシートコピー
Excel2010のVBAで、別のExcelブックを非表示で開いて、 シートをコピーすると、 「実行時エラー'1004':WorksheetクラスのCopyメソッドが失敗しました。」 というエラーが出て、正しくシートをコピーすることができません。 (1)のように自分のブックへはシートをコピーすることはできるのですが、 (2)のように別のExcelブック上でシートをコピーする場合と (3)のように別のExcelブック上にシートをコピーする場合の いずれも同様のエラーになります。 どのように記述すれば(2)と(3)でもコピーすることができるのでしょうか。 ------------------------------------------------------------- Sub test() Dim newEx As Excel.Workbook Dim newFile As String newFile = ThisWorkbook.Path & "\New_Book.xlsx" Set newEx = Workbooks.Open(newFile, UpdateLinks:=0) Application.Windows("New_Book.xlsx").Visible = False '(1)New_BookのSheet3を自分のブックにコピーする (正常) newEx.Worksheets("Sheet3").Copy after:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) '(2)New_BookのSheet3をNew_Bookにコピーする (エラー) newEx.Worksheets("Sheet3").Copy after:=newEx.Sheets(newEx.Sheets.Count) '(3)自分のブックのSheet3をNew_Bookにコピーする (エラー) ThisWorkbook.Worksheets("Sheet3").Copy after:=newEx.Sheets(newEx.Sheets.Count) Application.Windows("New_Book.xlsx").Visible = True Application.DisplayAlerts = False newEx.Save newEx.Close Application.DisplayAlerts = True Set newEx = Nothing End Sub -------------------------------------------------------------
- 締切済み
- Excel(エクセル)
- Excel VBA別ブックのシートをコピーするには
Excel2010のVBAで別ブックのシートをコピーしてくる方法 Excelファイル(C:\test\BOOK2.xls)のシート名が TESTというシートを自分のExcelファイル(C:\doc\BOOK1.xls)に コピーするにはどのように記述すればよいのでしょうか。 ・コピー先:自分のExcelファイル(C:\doc\BOOK1.xls) VBAのコードがあるファイルです ・コピー元:C:\test\BOOK2.xlsのTESTシート なお、TESTシートを持つ同じ名前(BOOK2.xls)のファイルが 別フォルダにもあります Workbooks( )の引数にファイル名(BOOK2.xls)は指定できるのですが、 フルパス名(C:\test\BOOK2.xls)で指定できないので困っています。
- ベストアンサー
- Visual Basic
お礼
複数のパターンをご提示いただいてありがとうございます!こちら見たことがないコードもあり難解ですが、頑張って調べてみようと思います!