• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:EXCEL VBA 新規ブック保存について)

EXCEL VBA 新規ブック保存について

このQ&Aのポイント
  • フォームで作成したデータから、請求書などの帳票をシートに作成し、新たなブックに保存する方法についてまとめました。
  • また、保存先の指定や二つのブックの行き来についても解説しています。
  • VBA初心者の方でも分かりやすいように、具体的なコードも記載しています。

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

  • ベストアンサー
  • watabe007
  • ベストアンサー率62% (476/760)
回答No.3

参考に Dim myPath As String, Filename As String myPath = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\管理システム\帳票" With Worksheets("請求書")   Filename = .Range("C7") & "_" & .Range("F11") & .Range("J11") & ".xls" End With Worksheets("請求書").Copy ActiveWorkbook.SaveAs Filename:=myPath & "\" & Filename

nachi_snap
質問者

お礼

回答頂きありがとうございます! 自分でパスをとれば良かったんですね!! 丁寧にご回答頂き本当に感謝しております。 先週末から、私事で恐縮なのですが 身内の見舞いに遠方に行っていた為 お礼を申し上げるのが遅くなってしまい 申し訳ありませんでした。 本当にありがとうございました!!!!

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.2

> C:\Users\××××××\Desktop\管理システム\帳票 >システムを丸ごと違うPCに変えても、エラーが出ないようにするには 以下でPCが変わっても・・・\デスクトップ\\管理システム\帳票 のパスを取得できます。 Dim myPath As String myPath = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\管理システム\帳票" MsgBox myPath

全文を見る
すると、全ての回答が全文表示されます。
  • cma3atgoo
  • ベストアンサー率35% (32/90)
回答No.1

個人的意見ですが・・・ ブックの保存先ですが、 まったく別のPCで使うことを考えるならば、 固定ではなくて毎回指定できるようにしたほうがよろしいかと思います 「GetSaveAsFilename」 をつかうと「名前をつけて保存」で出てくるようなダイアログを使うことができますし、 「ThisWorkbook.Path」 で開いたブックと同じフォルダが取得できます 毎回指定するのが面倒な場合は固定でもよいと思いますが、 その場合はできるだけわかりやすく、 階層が深くない(\がたくさんつかない)ところがよいと思います(c:\workなど) 具体的なコードをかけなくて申し訳ありませんが、ご参考まで

nachi_snap
質問者

お礼

私も階層はつけたくなかったので、その方法も参考にさせて頂きたいと思います! 早速の回答を頂きありがとうございます!! With Application.FileDialog(msoFileDialogSaveAs) .FilterIndex = 1 If.Show = -1 Then.Execute End With End Sub ↑ 名前をつけて保存ダイアログボックスを表示して保存 コード書いてみました  

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセルVBAで別ブックの条件検索

    VBA初心者です。エクセルは2007です。 『データのあるブック(Book1,Book2,Book3)』と、『検索条件シート+出力先シートをもつブック』の4つのブックがあります。 検索条件シートで、L22でブック、P22でシートを指定してN22に入力した数に対応するデータをVlookupで出力先シートのセルに抽出されるようにしたいのですが、※の部分で「エラー438 オブジェクトは、このプロパティまたはメソッドをサポートしていません」とでて実行できません。 データのあるブックは同じ形式でシートには表があります。 数 a b c d 1 A B C D 2 ○ × △ ■ 3 Z Y X W     ・     ・ 検索条件がL22=3,P22=2,N22=2だとすると、Book3の2枚目のシートを検索し、 出力先シートのD1=○,J6=×,L23=△,J69=■となるようにしたいです。 本やインターネットで調べましたがわかりませんでした。 解決方法を教えていただきたいです。お願いします。 Sub 検索() Dim a, b, c, d As Range Dim 番号, ブック, シート As Integer With Workbooks("検索.xlsm").Sheets("検索条件") 数 = .Range("N22").Value ブック = .Range("L22").Value シート = .Range("P22").Value End With Dim wb As Workbook Dim sh As Worksheet Dim set範囲 As Variant With Workbooks("検索条件.xlsm").Sheets("出力先") Set a = .Range("D1") Set b = .Range("J6") Set c = .Range("L23") Set d = .Range("J69") End With Select Case ブック Case 1 Set wb = Workbooks("Book1.xlsm") wb.Activate Select Case シート Case 1 Set sh = Worksheets(1) Case 2 Set sh = Worksheets(2) Case Else MsgBox "・・・・・", vbExclamation, "nothing" End Select Case 2 Set wb = Workbooks("Book2.xlsm") wb.Activate Select Case シート Case 1 Set sh = Worksheets(1) Case 2 Set sh = Worksheets(2) Case Else MsgBox "・・・・・", vbExclamation, "nothing" End Select Case 3 Set wb = Workbooks("Book3.xlsm") wb.Activate Select Case シート Case 1 Set sh = Worksheets(1) Case 2 Set sh = Worksheets(2) Case Else MsgBox "・・・・・", vbExclamation, "nothing" End Select Case Else MsgBox "nothing", vbExclamation, "nothing" End Select ※Set set範囲 = wb.sh.Range("A4:E42")  ←エラー438 a = Application.WorksheetFunction.VLookup(数, set範囲, 2, False) b = Application.WorksheetFunction.VLookup(数, set範囲, 3, False) c = Application.WorksheetFunction.VLookup(数, set範囲, 4, False) d = Application.WorksheetFunction.VLookup(数, set範囲, 5, False) End Sub

  • エクセルVBAで、複数のブックからデータベースを作りたい

    こんにちは。VBAをはじめたばかりの者です。 変数の使い方で教えていただきたいことがあります。 Dim myFLName As String myFLName = ThisWorkbook.Path & "\001.xls" Workbooks.Open Filename:=myFLName, ReadOnly:=True Workbooks("dbase.xls").Activate Range("A2").Select ActiveCell.Value = 1 ActiveCell.Offset(, 1).Select ActiveCell.Value = Workbooks("001.xls").Worksheets(1).Range("R3") ActiveCell.Offset(, 1).Select ActiveCell.Value = Workbooks("001.xls").Worksheets(1).Range("C2") ActiveCell.Offset(, 1).Select ActiveCell.Value = Workbooks("001.xls").Worksheets(1).Range("R2") ActiveCell.Offset(1, -3).Select 001.xls~(連番でない)200.xlsくらいまでのファイルがあり、 同じフォルダにdbase.xlsを作って1ブックから1レコードになるようにしたいと 思います。 こんな感じで1行目はできたのですが、2行目の1列目に「2」を入れ、 2列目からは001.xlsの次のブックを開いてセルの中身をコピーしたいのです。 変数の使い方がよくわからないのですが、教えていただけますでしょうか。 よろしくお願いいたします。

  • EXCEL VBA  任意のシートに貼りつけ

    御世話になります。おしえて下さい。 データPCのexcelデータからオートフィルタでデータを抽出して任意の列を 抽出するところまでは出来ているようですが、その先が付け焼刃ですので、 さっぱり解決策がみつけられません。 データをオートフィルタにて抽出→帳票ブックの任意のシートに張り付け 帳票のシート名はユーザフォームのリストボックスから代入してるつもりです。 宜しくお願い致します。 Option Explicit Sub Macro3_2() Dim myRL As Date Dim MyRow As Long Dim Window1 As Window Dim buf As String myRL = UserForm1.TextBox1 buf = UserForm1.ListBox1 Workbooks.Open Filename:= _ "\\WPCABC\Users\hoge\Documents\hogehoge\データ.xlsx" ActiveSheet.ListObjects("テーブル_PCABC_からのクエリ") _ .Range.AutoFilter Field:=9, _ Criteria1:="=" & myRL ActiveSheet.ListObjects("テーブル_PCABC_からのクエリ") _ .Range.AutoFilter Field:=12, _ Criteria1:=">=1" MyRow = Worksheets("sheet1") _ .Range("A" & Rows.Count).End(xlUp).Row Worksheets("sheet1").Activate Range("B2:B" & MyRow).Select Selection.Copy ------------------------------------------------------↓上手く出来ません Workbooks("帳票.xlsm").Worksheets("buf") _ .Range("Y3" & MyRow) _ .PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Workbooks("帳票.xlsx").Worksheets("sheet1").Activate Range("L2:L" & MyRow).Select Selection.Copy Workbooks("帳票.xlsm").Worksheets("buf") _ .Range("Z3" & MyRow) _ .PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Set Window1 = Application.Windows("クエリデータ.xlsm") Window1.Activate End Sub

  • Excel vba selectが効かない

    2と3の2つのエクセルファイルがあります。縦の列を新しいファイルの横の行に コピーしていきたいプログラムです。 2のファイルの1シート目の"C8:C25" 3のファイルの1シート目の"C9:C65" を新しい1のファイルの1シート目の1行目にコピーするプログラムを 作っていますが1シート目はpasteされるのですが 3のファイル2シート目からselectの指定が"C9:C65"ではなく、B9からQ65の指定になってしまい思ったコピーができません(★のところ)、1シート目はうまくいっているのでどうして3のファイルの2シート目のからうまくいかないかわかりません。 5シートまででテストをしているのですが実際は各々255シートありもってくる列も 12列あります。とりあえずCの列だけ5シートで試してみています。 Dim i As Long Dim N As Long i = 1 N = 1 Do While i <= 5 ''C列''' Workbooks(2).Worksheets(i).Activate   '2のファイル Worksheets(i).Range("C8:C25").Select   'もってくるところ Selection.Copy Workbooks(1).Worksheets(1).Activate   '1新しいファイル Range("C" & N).Select   '貼り付けるところ Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks:=False, Transpose:=True Workbooks(3).Worksheets(i).Activate   '3のファイル Workbooks(3).Worksheets(i).Range("C9:C65").Select  '★もってくるところ Selection.Copy Workbooks(1).Worksheets(1).Activate   '1新しいファイル Range("U" & N).Select   '貼り付けるところ Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks:=False, Transpose:=True i=i+1 N=N+1 LOOP

  • エクセルVBAの変数利用

    シートのC1セルに入力したブック名をアクティブにするための 変数なのですが、アクティブになりません。 下のようにしていますが、とのようにすればよいでしょうか? Sub test() Dim FileName As Range FileName = ThisWorkbook.Path & "\" & Sheets("sheet1").Range("C1") & ".xls" Workbooks.FileName.Activate End Sub

  • VBA ブック間のコピー

    2つのブック(どちらも変数ですが、MyFNameとMyFName2)を開いています。 このブック間で、データをコピー貼付けしたいのです 貼付け先は、セル結合しているので、セルを2つ選択してみました Workbooks(MyFName).Activate 'Worksheets("部品表").Activate Range("D4").Select Selection.Copy Workbooks(MyFName2).Activate Range("F37:G37").Select でも、貼付け先のセルがアクティブにはなっていますが、データが貼り付けられていませんでした。 ちなみに、2008年00月00日のデータ貼付け作業です どうかご指導ください

  • エクセルVBAでの質問です。

    エクセル2003での質問です。 book1のシート1からbook2のシート18セルC30へ 表のコピーを行い、C30が空白セルだったらそのまま貼り付け、 非空白だったら表最下部から2行あけて表のコピー操作を行う。 としたいのですが以下の箇所でエラーがでてしまいます。 book1.Activate sheet1.Range("C8:E24").Copy book2.Activate If sheet18.Range("C30") = "" Then sheet18.Range("C30:E46").Select Selection.PasteSpecial.xlPasteValues ←実行時エラー424発生 Else sheet18.Range("C30").End(xlDown).Offset(2).Select Selection.PasteSpecial.xlPasteValues ←実行時エラー424発生 End If 以上、解決策をご教示願います。

  • エクセルVBA 違うbookのフォームにデータを

    ひとつのエクセルに BOOK1,2 を 起こして BOOK1 から BOOK2 の 自作フォームの テキストに 値は 送り込めないのでしょうか? シートのセルと ボタンは 可能なのですが・・・ Workbooks("Book2.xlsm").Worksheets("Sheet1").Range("A1:a4").Copy Workbooks("test.xlsm").Worksheets("Sheet2").Range("A1:a4").PasteSpecial Workbooks("test.xlsm").Worksheets("Sheet2").opb2.Value = True フォームには何か書き方が有るのでしょうか

  • Excel VBAでの関数入力

    お世話になっております。 ExcelのVBAに関する質問です。 やりたいこととしては  (1) CSVファイルを開き、そのファイル名を取得後  (2)「カウントマクロ.xlms」、「件数表」シートのB2から最終行まで、(1)のCSV(Sheet1)を参照先とするCOUNTIF関数を入力する。というものです。   Dim OpenFileName As String OpenFileName = Application.GetOpenFilename("Microsoft Excelブック,*.csv?") Workbooks.Open OpenFileName Filename = Dir(OpenFileName) Workbooks("カウントマクロ.xlsm").Activate Worksheets("件数表").Activate LASTROW = Cells(Rows.Count, "A").End(xlUp).Row Range("B2").Select ActiveCell.FormulaR1C1 = _ "=COUNTIF(Filename.Sheet1!R2C10:R10C10,""*"" & RC[-1] & ""*"")" Range("B2").Select Selection.AutoFill Destination:=Range(Cells(2, "B"), Cells(LASTROW, "B")) End Sub 上記のように記述してみたのですが、 "=COUNTIF(Filename.Sheet1!R2C10:R10C10,""*"" & RC[-1] & ""*"")" の部分Filenameが件数表シートの関数にそのまま表示されており、うまく機能しませんでした。 このようにVBA上で関数を入力する場合、FileNameのように定義したファイル名はどのように記述すればよいのでしょうか。 どなたかご教示いただけましたら幸いです。

  • Excel vba PDF 複数ファイルを一括保存

    以下のコードで、for eachの部分をどのように変えると 1枚のpdfですべて保存出来るか教えてください。 よろしくお願いします。 sub macro1()  dim h as range  worksheets("Sheet1").select  for each h in range("C2:C" & range("C65536").end(xlup).row)   worksheets("Sheet2").select   range("B6").value = h.value   range("E18...

FAX-2840の横線トラブルを解決!
このQ&Aのポイント
  • FAX-2840の送信時およびコピー時に横線が入るトラブルが発生しています。送信画質の設定を薄くすることで一部解決しましたが、コピーでも同じ問題が起きています。スキャナー部分が汚れるわけではないので、不良品の可能性があります。
  • 購入後、FAX-2840を初めて使用した際に横線が入って読めないという問題が発生しました。送信画質の設定を薄くすることで一部解決しましたが、コピーでも同様の問題が起きています。スキャナー部分が汚れるわけではないので、不良品の可能性が考えられます。
  • FAX-2840の使用時に横線が入って読めないという問題が発生しています。送信画質の設定を薄くすることで一部解決しましたが、コピーでも同じ問題が起きています。スキャナー部分が汚れるわけではないので、不良品の可能性があります。
回答を見る

専門家に質問してみよう