- ベストアンサー
変数の入れ方がわかりません。教えてください。
ブックに溜まったシートを別フォルダ移動させたいのですが、シート名(変数)の入れ方がわかりません。 当方、ビギナーで参考書頼りに、組んでみました。 もちろん動きません ToT どなたかご指導願います。 ・シートは稼働日の"yymmdd"名で数ヶ月分です (休日は作成されませんが、順番に並んでいます) ・ブックメインシート、セルA1,A2に移動シート自至を入力 ・入力された日を頼りに、シート分を移動、保存 やりたい処理、ご理解いただけたでしょうか? For分の日付自→至で、飛び日があった場合は、処理できるのでしょうか? 構文もたぶんメチャメチャと思いますが、どなたかご指導願います。 ----------------------------------------------------------- Dim Wb As Worksheet Dim Hiduke As Variant Dim Sdate As Variant,Edate As Variant Dim i As Integer Sub ido() Sheets("main").Select Sdata = Range("A1") Edata = Range("A2") For i Format(Sdata, "yymmdd") to Format(Edata, "yymmdd") Hiduke = ************* Sheets("Hiduke").Move ChDir "C:\仕事" Set Wb = ActiveWorkbook Wb.SaveAs CreateObject("WScript.Shell").SpecialFolders ("C:\仕事") _ & "\" & Format(Hiduke, "yymmdd") ActiveWorkbook.Save ActiveWorkbook.Close Next i Sheets("main").Select End Sub
- みんなの回答 (5)
- 専門家の回答
関連するQ&A
- エクセルと同じファイル名でcsvを作成するマクロ
エクセルからCSVファイルをYYMMDD付でマクロを使って 作ろうとしていますが拡張子の「.xls」がどうしても残ってしまいます。 例えば、「test.xls」が「test.xls070326.csv」のように。 これを「test070326.csv」とするにはどうしたらよいでしょう。 今のコードはつぎのようにしています。 Sub test1() Dim flname As Variant Dim wb As Workbook flname = ActiveWorkbook.Name + CStr(Format(Date, "yymmdd")) ActiveSheet.Copy ActiveSheet.SaveAs Filename:=flname, _ FileFormat:=xlCSV ActiveWindow.Close savechanges:=False ActiveWorkbook.Close End Sub これでもCSVとしては使えるのですが、気持ちがすっきりしません。 どなたか正解をお願いします。
- ベストアンサー
- オフィス系ソフト
- 日付抽出でエラーします、教えてください。
s1シートB列に日付が連続1月~数ヶ月分入っています(書式日付は 「3/13」の形式で入力されてます) この中から例えば3月分だけをフィルタして、それを別ブック保存したいのです。 インプットボックスで「09/03」yy/mmと入力すると フィルターを掛けるところでデバックエラーになります 3/13形式の入力を、どのようにして09/03と認識させるのか 上手く抽出させるには、どうしたらいいのでしょうか?悩んでいます。 ご指導ねがいますm(_ _)m Private Sub CommandButton1_Click() Dim Wh As Worksheet, ws As Worksheet Dim Hiduke As Variant, Uwagaki As Integer, Owarimsg As Integer Dim umu Dim dumu '日付入力 Hiduke = Application.InputBox("年月データ入力", , Format(Hiduke, "yy/mm")) If Hiduke = "Boolean" Or Hiduke = False Or Hiduke = " " Then Exit Sub Do While Hiduke = "" Hiduke = Application.InputBox("日付入力されてません", , Format(Hiduke, "yy/mm")) Loop 'sheetからの日付データ抽出 Worksheets("s1").Activate Range("B6").AutoFilter Field:=1, Criteria1:="=" & Format(Hiduke, "yy/mm") Worksheets("s1").AutoFilter.Range.SpecialCells(xlCellTypeVisible).Copy '有無確認 Set dumu = Range("B7").CurrentRegion umu = dumu.Columns(1).SpecialCells(xlCellTypeVisible).Cells.Count - 1 If umu = 0 Then MsgBox "日付データなし" GoTo Syuryo Else '保存 Syori: Application.ScreenUpdating = False Application.DisplayAlerts = False Set wb = ActiveWorkbook wb.SaveAs Filename:="C:\お仕事\年月度別" & "\" & Format(Hiduke, "yymm") & ".xls" Application.CutCopyMode = False ActiveWorkbook.Save ActiveWorkbook.Close Application.DisplayAlerts = True Application.ScreenUpdating = True End If Syuryo: Worksheets("s1").AutoFilterMode = False Application.CutCopyMode = False Worksheets("s1").Activate Range("A1").Select End Sub
- ベストアンサー
- オフィス系ソフト
- VBAで Set wb = Sheets(1).Copyができないわけ?
つい先ほどの質問 4150169 は掲示したコードが抜けておりましたので無視して、こちらにご回答ください。 ほんと抜けた話です。すみません。 以下のマクロtest01はエラーになります。 Sub test01() Dim wb As Workbook Set wb = Sheets(1).Copy 'エラー「オブジェクトが必要です」 End Sub もちろん Dim wb As Workbook Sheets(1).Copy Set wb = ActiveWorkbook と修正すればエラーにならないことは存じていますが、ふと疑問がわきました。 Sheets(1).Copyの段階であたらしいWorkbookが誕生していますよね。 ならば、そのWorkbookはオブジェクトではないのでしょうか? Workbooks.Add で誕生したWorkbookは Set wb = Workbooks.Add と変数wbにSetできるのに Set wb = Sheets(1).Copy ができないのが不思議です。 Set wb = ActiveWorkbook としないでもSheets(1).CopyをwbにSetする書き方はないのでしょうか?
- ベストアンサー
- オフィス系ソフト
- Excel 2010 VBAで教えてください。
Excel 2010 VBAで教えてください。 Doubleの配列 Dim A(100) as double に ワークシート "Sheet1" セル A1:A100 の値を一発(For loop等を利用しない) で読み込むにはどうすればよいのでしょうか。 同じく、 Doubleの配列 A(100)を ワークシート "Sheet2" セル B1:B100 に一発で書き出すのはどうすればよいのでしょうか。 Variantにて Dim A as Variant では A = Sheets("Sheet1").Range("A1:A100") で 読み込めました。 また Sheets("Sheet2").Range("B1:B100")で書き込みできましたが、double等でどうすれば良いのか知りたいです。
- ベストアンサー
- Excel(エクセル)
- Function 構文のなかに変数をいれたい(VBA)
お願いします。 エクセルVBAにて 下記のようなFunction構文内に変数を設定する方法を 教えてください。 この中で k以外にも a = Sheets("sheet1").Range("E27") b = Sheets("sheet1").Range("E27") この変数を扱いたいのですが。 もしかして他にもfunction構文が必要でしょうか。 Function data(k As Double) Dim sum As Double Dim ct As Integer Dim keisu As Integer Dim a As Double Dim b As Double a = Sheets("sheet1").Range("E27") b = Sheets("sheet1").Range("E27") 以下 略
- ベストアンサー
- オフィス系ソフト
- Application.Dialogs(xlDialogSaveAs)でキャンセルの取得
エクセル2000です。 Sheet1を複製し名前をつけて保存するマクロを書きました。 以下のとおりですが、キャンセルされた場合でも「保存しました」のメッセージが出てしまいます。 キャンセルされたことを取得するにはどう書けばいいでしょうか? Sub tesy01() Dim ns As Workbook Dim fn As String Sheets("Sheet1").Copy Set ns = ActiveWorkbook With ns.Sheets(1) .Cells.Copy .Cells.PasteSpecial Paste:=xlValues Application.CutCopyMode = False fn = .Range("A1") & Format(Date, "yymmdd") End With Application.Dialogs(xlDialogSaveAs).Show ARG1:=fn & ".xls", ARG2:=1 ns.Close (False) Set ns = Nothing MsgBox "保存しました。" ThisWorkbook.Activate Sheets("Sheet1").Activate End Sub
- ベストアンサー
- オフィス系ソフト
- 変数を名前に使ったシートにデータをコピーする方法
いつもお世話になります。 hisworkbookにあるVBAから新たに開いたmyFileにデータをコピーさせようとしています。 myFileである統合.xlsにはあらかじめ該当するシートが作成されています。 myBushoとmyGroupはそれぞれセルの値を参照しています。 それを元に対応するシート名にデータのコピーをしたいのです。 当初workbooks(myFile)をactiveworkbookにしていたのですが、うまくコピーされなかったので、 ファイルパスを記述しました。 sub test() dim cnt as long dim lcnt as long dim myFile as string dim myBusho as string dim myGroup as string cnt = ThisWorkbook.Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row lcnt = ActiveWorkbook.Sheets(myBusho & "_" & myGroup).Cells(Rows.Count, 1).End(xlUp).Row myFile = "C:\統合.xls" myBusho = range("A1").value myGroup = range("A2").value ThisWorkbook.Sheets("Sheet1").Range(Cells(9, 1), Cells(cnt, 21)).Copy _ Workbooks(myFile).Sheet(myBusho & "_" & myGroup).Cells(lcnt + 1, 1) end sub 上記のコードではうまくコピーできませんでした。 よろしくアドバイスのほど、お願いします。
- 締切済み
- Visual Basic
- 日付型変数を検索する方法
シート内にある日付型の変数を検索させる処理をしたいのですが、以下のように記述したところ、 ================================== Dim hiduke As Date Dim lngYLine As Long Dim intXLine As Integer hiduke = Cells(1, 3).Value 'セルの値取得 Set Obj = Worksheets("Sheet1").Cells.Find(hiduke) If Obj Is Nothing Then MsgBox "該当の日付" & hiduke & "は、ありません。" Else lngYLine = Worksheets(newSh).Cells.Find(hiduke).Row intXLine = Worksheets(newSh).Cells.Find(hiduke).Column MsgBox hiduke"は、" + CStr(lngYLine) + "行目の" _ + CStr(intXLine) + "列目にあります" End If ================================== Set Obj = Worksheets("Sheet1").Cells.Find(hiduke) で「実行時エラー"9" インデックスが有効範囲にありません」のエラーになります。 ワークブック内には Worksheets("Sheet1")存在しますし、なぜこのようなエラーがでるのか? また、どうしたら解消できるのか?について、教えていただきたく・・・ よろしくお願いいたします。
- 締切済み
- Visual Basic
- ファイル すべてのシート 値だけ 別のシート
ファイルAのすべてのシートに関数式が含まれています。 このシートを別フォルダーに分割し書き出すことは出来たのですが 関数式まで貼り付けられます。 これを値のみにしたいのですがご教授御願いします。 マクロはこれです。 Sub シート分割() Const path As String = "C:¥" Dim bk As Workbook Set bk = ActiveWorkbook Dim st As Worksheet For Each st In bk.Sheets Workbooks.Add st.Copy Before:=ActiveWorkbook.Sheets(1) ActiveWorkbook.SaveAs path & st.Name & ".xls" ActiveWorkbook.Close Next End Sub
- ベストアンサー
- オフィス系ソフト
- Matchの処理について
下記の処理がどうしてもうまくいかなくて、 皆様のお知恵を拝借できればありがたいです。 Sheet1に下記のように縦に3列データがならんでいます。 A あ 10 A い 12 A う 16 B あ 19 B い 15 B う 7 これをもとにSheet2に下記の通りマトリクス形式に 変換する。 あ い う A 10 12 16 B 19 15 7 これを処理しようと以下の通り記述したのですが、 マッチする項目がなかった場合、どうも行(列)が ずれてヒットしているようです。 On Error Resume Nextが原因のような気がするのですが。 これを回避するにはどうしたらよろしいでしょうか? お助けください~。 よろしくお願い致します。 Dim i As Long Dim j As Long Dim k As Long Dim 検索値A As Variant Dim 検索値B As Variant On Error Resume Next i = 2 Do While (Sheets("SHEET1").Cells(i, 1) <> "") 検索値A = Sheets("SHEET1").Cells(i, 1).Value 検索値B = Sheets("SHEET1").Cells(i, 2).Value j = Application.Match(検索値A, Sheets("Sheet2").Range("範囲A"), 0) k = Application.Match(検索値B, Sheets("Sheet2").Range("範囲B"), 0) Sheets("Sheet2").Cells(j, k).Value =Sheets("SHEET1").Cells(i, 3) i = i + 1 Loop End Sub
- ベストアンサー
- Visual Basic
お礼
hige_082さん、ありがとうございます。 こうやって、自分のコードを順追って頂くと とても解りやすいです、特ににFor分など、あぁこうやるのか、、と^^ これをベースにがんばってみます!