エクセルVBAブック出力方法とは?

このQ&Aのポイント
  • エクセルVBAを使用して特定のセル部分のみを新しいファイルに出力する方法について質問します。
  • 提供されたVBAコードの問題点や誤りについて指摘していただきたいです。
  • 出力元ファイルと出力先ファイルの範囲やシート名が固定されており、出力元セルと出力先セルが同じ範囲です。
回答を見る
  • ベストアンサー

エクセルVBA ブック出力方法について(2)

いつもお世話になっています。 以前にも同じ内容の質問をさせて頂いた者です。 回答を頂きましたが、当方説明不足および勉強不足のため、 再度質問させて頂きます。 元のファイルから、特定のセル部分のみを出力先ファイル(新規.xls)へブック出力したいのですが 方法がわかりません。 当方にて記述したVBAは以下ですが、満足のいく作成ができておりません。 矛盾および誤りを指摘できる方はご指摘頂けないでしょうか。よろしくお願いします。 Sub ブック出力() Sheets("Sheet1").Select Sheets("Sheet1").Range("リスト").Copy Sheets("Sheet1").Range("A1:J12").Paste Workbooks.Add ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\新規.xls" End Sub ※リスト→出力元ファイルのA1:J12までの範囲 ※出力元ファイル、出力先ファイルのシート名は不変です。(両方ともsheet1) ※出力先セル、出力元セルともに範囲は同じです。(両方ともA1:J12)

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

  • ベストアンサー
  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.3

もう少しだったとですね。 Sheets("Sheet1").Range("リスト").Copy Workbooks.Add Sheets("Sheet1").Range("A1:J12").PasteSpecial ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\新規.xls" 手作業の場合の順序を考えて見ましょう 範囲をコピー 新しいブック開く 貼り付けをする 名前を付けて保存する の順番にコードを記述します。

mame1218
質問者

お礼

完璧です。

その他の回答 (2)

  • mar00
  • ベストアンサー率36% (158/430)
回答No.2

Sub ブック出力() Sheets("Sheet1").Range("リスト").Copy Workbooks.Add Range("A1").PasteSpecial ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\新規.xls" End Sub

mame1218
質問者

お礼

完璧でした。ありがとうございました。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

2つのブックを問題にしているはず。 VBAコードで扱うときに、その行を実行時までに、ブックまで含めてセル・セル範囲が確定している必要あり。 質問者のコードではそれが見えない。 基本的なことの勉強が、そこ(さえも)までいたってないので、何度も聞いても、進歩ないでしょう。 ーーー >Sheets("Sheet1").Range("A1:J12").Paste 貼り付け範囲の指定は 起点(左上隅セル)しか指定しないはず。基本的なこと。 Googleででも「VBA Paste」で調べてみること。 質問のコードなんか、何をしているのかわからない。ブックがADDされる前にPasteするとは?など。 ーー どうしてもというなら、元の回答者のコードを質問に載せて、それを実行すると、こうなるが、自分はこうしたいと文章に書いて 親切にもコードを全部書いてくれる回答者が現れるのを待ったら ==== VBAコードの話をする前に、手作業でやったらどうなるか 細かく人間の行動を、1歩1歩箇条書きにして、処理を文章化して見る訓練をお奨めする。 そしてそれを実現するためのコードの書き方を1行ずつ考えて、WEBで調べるとか。 。

mame1218
質問者

お礼

ありがとうございました。 VBAを体系的に勉強することにしました。

関連するQ&A

  • Excel VBAでシートを別なBookにするには?

    Book ABC.xls の Sheet("TEST") を書式と値(数式でなく)だけコピーし別なBookとして保存したいのです。 その際、Sheets("LOGIC").Range("A1")を、マクロで1回目は2、2回目は3とし、12回目の13まで行います。Sheets("TEST")はSheets("LOGIC").Range("A1")を参照しているので、その結果として、Sheets("TEST")の値は当然12通りに変化します。 新たに自動作成される別なBookは Sheet1~Sheet12の12枚のシートをもち、それぞれがABC.xls の Sheets("TEST") の12通りのコピーとなるようにしたいのです。 このようなマクロはどう作ればいいのでしょうか? お手上げです。何卒よろしくお願いします。

  • エクセル 特定のシートを異なるブックの指定したシートにコピーするマクロ

    エクセルの"貼り付け先.xls"の(シート名="集計")を開いている状態で、 別の異なるブックの"貼り付け元.xls"の(シート名="sheet1")の内容を全部コピーして "貼り付け先.xls"の(シート名="集計元データ")へ貼り付けるマクロは どのようになりますでしょうか? いろいろ調べて下記のように書きましたが、 インデックスが有効範囲にありませんというメッセージが出て、 デバッグを確認すると Workbooks("貼り付け元.xls").Worksheets("Sheet1").Range("A1").Copy_の部分が黄色く表示されてきます。 (1) "貼り付け先.xls"と"貼り付け元.xls"は同じパソコンのマイドキュメントに保存されています。 (2)"貼り付け元.xls"の"Sheet1"はセルA1から入力されていて、 内容は毎日変わります。 (3)Range("A1")や("A1:IV65536")のセル番地をいろいろ変えたりしても同じでした。 Sub クリップボードを経由せずにコピー貼り付けする_異なるブック() Workbooks("貼り付け元.xls").Worksheets("Sheet1").Range("A1").Copy_ Workbooks("貼り付け先.xls").Worksheets("集計元データ.xls").Range ("A1:IV65536") End Sub

  • EXCEL VBA におけるブック終了後の値の保存方法について

    EXCEL VBAについて質問があります。もしかしたら初歩的なことかもしれませんがよろしくお願いいたします。 まず、 Sub Test() Dim i As String i = InputBox("好きな果物を入力してください") Sheets("Sheet1").Range("A1").Value = i End Sub を実行し、ブックを保存して終了する。 ブックを開く Private Sub Workbook_Open() Dim k As String k = Sheets("Sheet1").Range("A1").Value If k = "みかん" Then MsgBox ("a") Else: MsgBox ("b") End If End Sub この処理を Sheets("Sheet1").Range("A1").Value = i というシート上のセルに値を保存するという方法を取らずに iの値をブック終了後もプロシージャ内に持っておくというのは可能なのでしょうか。 Publicで宣言してもブックを一度閉じると やっぱりiの値は保存されませんでした。 どうぞよろしくお願いいたします。

  • エクセルVBA ブック出力方法について

    いつもお世話になっております。 エクセルVBA@初心者です。 エクセルシート内のある特定の場所(今回であれば、B3:L19)の情報をデスクトップ上にブック出力したいのですが、可能でしょうか。可能である場合、出力方法をご教示いただけないでしょうか。 *出力ファイルは、「連絡書.xls」という名前で出力したいです。 *出力ファイル内に、出力元ファイル(B3:L19)の情報がA1:K17に書き出されるようにされたいです。 *以上の条件の満たされているシンプルなつくりなもので問題ありません。

  • エクセルVBAの変数利用

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

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

    フォームで作成したデータから、請求書などの帳票をシートに作成しています。 その請求書シートを、新たなブックを作成し、シートへ貼り付け セルC7(帳票名)    F11(コード1)    J11(コード2) この3つを合わせた名前で任意のフォルダへ保存して、閉じるようにしたいと考えています。 また、ブックの保存先を指定するにあたり 下の指定でコードを書いたのですが    C:\Users\××××××\Desktop\管理システム\帳票 システムを丸ごと違うPCに変えても、エラーが出ないようにするには この指定の書き方でも良いのでしょうか? まだ初心者なもので 二つのブックを行き来するコードで頭が混乱しています。 まだVBA勉強を始めたばかりで、質問方法も拙いところも多々あると思いますが ご教授いただけます様、どうぞよろしくお願い致します! 自分で書いたコードですが 考えすぎて、ちょっと支離滅裂になってしまい 恥ずかしいのですが藁にもすがる思いでご質問させていただきました Dim Newbook As Workbook   Set Newbook = Workbooks.Add   fileName = Range("C7") & "_" & Range("F11") & Range("J11")   Newbook.SaveAs fileName:=Worksheets("請求書").Range("C7") & "_" & Worksheets("請求書").Range("F11") & Worksheets("請求書").Range("J11") Windows("管理システム.xls").Activate Worksheets("請求書").Select Cells.Select Selection.Copy Windows("fileName").Activate Cells.Select ActiveSheet.Paste Range("A1").Select  ブック名 (元データ) 管理システム.Xls  シート名        請求書 追記: 本来はフォームから直接印刷を出したいのですが      フォームでは対応しきれない部分を、シート上にて必要に応じ手を加えてから、      出力したいと考え、今回のシートへの出力を考えています

  • EXCEL VBA 別ブックから貼り付け

    お世話になります。 A、Bという2つのブックがあります。 A.xls データファイル B.xls 処理実行ファイル Bブックを開いてSheet1に置いてあるボタンを押すとファイル洗濯ダイヤログが出てきて、そこで指定したBブックをsrtPathに格納(シートは1つだけ)のBブックのA1から全データをAブックのSheet1に貼り付けたいのです。 下記VBAを書いてみましたがエラーになってうまく動きません。 Workbooks(strPath).Range("A1").Copy ActiveWorkbooks.Worksheets("Sheet1").Range("A1").PasteSpecial どなたが解決方法をご教授いただけませんでしょうか。 よろしくお願い致します。

  • エクセルVBAで困っています。

    Excell2003でマクロを作成したのですが、思うような結果が出なくて困っています。 どなたかお力をお貸しください。 お願いします。 【作成したマクロ】 Sub テスト()   myPath = ThisWorkbook.Path   buf = Dir(myPath & "¥データ¥" & "*.xls")   Do While buf <> ""     Target = "'" & myPath & "[" & buf & "]Sheet1'!R1C1"     i = i + 1     Cells(i, 1) = buf     Cells(i, 2) = ExecuteExcel4Macro(Target)     buf = Dir()   Loop End Sub 【設定状況】 ・デスクトップ上に "サンプル.xls" があり、ThisWorkBookに上記マクロを書きました。 ・デスクトップ上に "データ" というフォルダがあり、その中に、"Book1.xls" と "Book2.xls" があります。 ・"Book1.xls" のSheet1のRange("A1")には "あいうえお" が入力されています。 ・"Book2.xls" のSheet1のRange("A1")には "かきくけこ" が入力されています。 【マクロ実行結果】 ・Range("A1") ・・・ Book1.xls ・Range("B1") ・・・ #REF! ・Range("A2") ・・・ Book2.xls ・Range("B2") ・・・ #REF! となってしまいます。 【求めたい結果】 ・Range("A1") ・・・ Book1.xls ・Range("B1") ・・・ あいうえお ・Range("A2") ・・・ Book2.xls ・Range("B2") ・・・ かきくけこ よろしくお願いします。

  • エクセルVBAでブックを開きたいのですが、

    エクセルVBAでブックを開きたいのですが、 アクティブシートを別のブックに移動させたいのですが、 まず、目的のブックを開く → 移動させたいシート名を右クリック → 移動またはコピー を選択 → 移動先ブック を選択  というふうにしようと思っていますが、 Workbooks.Open Filename:= _ "C:\Documents and Settings\YUMIKO\My Documents\YYYY.xls" のようにファイル名を入れると開くことができました。 が、   Workbooks.Open Filename:= _ "C:\Documents and Settings\YUUKORON\My Documents\Range("F1").Value.xls" のように、アクティブシートの セルF1にファイル名を入れて、開きたいのですが、どうしても開くことができません。いろいろ調べて試しましたが、無理でした。 基本的にマクロで記録で作っている初心者です。 回答よろしくお願いします。

  • エクセルVBAで少数点を切り捨てる方法

    エクセルVBAであるbookのセルに(=A1*0.05)というような税額を取得するための関数が入っており、 それを Workbooks(strBname).Sheets("Sheet1").Range("A" & i).Value = Workbooks(thisWB).Sheets(mainScr).Range("A" & ii).Value のように別ブックに出力するコードを書いているのですが、 Nunberlocalを使用しても表示上は小数点を表示していないのですが セルを選択すると小数点が消えていません。 完全に少数点を切り捨てる方法はあるでしょうか?

専門家に質問してみよう