
お世話になります。
以下のマクロでエクセルの特定のシートをprn形式で保存しております。
今までこれで問題なかったのですが、
出力する(prnで保存する)範囲が少なくなったので、
特定のセル範囲を指定して prnで保存したいと思っています。
このページを参考にしたのですが ↓
https://oshiete.goo.ne.jp/qa/6373321.html
よくわかりませんでした。
シングルコーテーションの中の様に
特定のエリアをコピーするところまでは
※「"Sheet2"の"A1:B3"」
間違っていないと思いますが、シングルコーテーションを外すと
ここでエラーになってしまいます。
※もちろん「Worksheets("Sheet2").Copy」は削除してます
すいませんが間違えているところがわかる方で、
コードで説明できる方、間違えているところを教えて下さい。
以下の条件を満たしていれば、新規のコードでもOKです
すいませんがよろしくお願いします。
追記
1)prnで出力するエリアは前述の通り"Sheet2"の"A1:B3"です
※アクティブシートのエリアではありません
2)保存する名前は「Test」+「アクティブシートのB5セルの値」です
3)以下のマクロはprnで出力していますが、拡張子は「& ".html"」で
「html」にしています。
参考)
1)以下のマクロでそのまま「sheet2」がprnで出力できます
2)保存場所は便宜上「"C:\B\"」にしています。
※Cドライブの「B」フォルダー
※新規で書いて頂ける時はわかり良い場所にして頂けるとありがたいです
3)エラーメッセージは「コンパイルエラー:構文エラー」です
※ファイルが壊れてヘルプビューアーが見れないためヘルプは未確認です
Sub Sheet2_copy()
Dim book1 As Workbook
Dim i As String
i = Range("B5").Value
Worksheets("Sheet2").Copy
'Worksheets("Sheet2").range("A1:B3")Copy
Set book1 = ActiveWorkbook
book1.SaveAs Filename:="C:\B\" & "Test-" & i & ".html", _
FileFormat:=xlTextPrinter
book1.Close False
End Sub
No.5ベストアンサー
- 回答日時:
さらに考え方を変えて、次の方が変更も楽だと思います。
--------------------------------------------------------------------------------
Sub Sheet2_copy()
Dim i As String
i = Range("B5").Value
Worksheets("Sheet2").Range("A1:B3").Copy
Workbooks.Add
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveWorkbook.SaveAs Filename:="C:\B\Test-" & i & ".html", _
FileFormat:=xlTextPrinter
ActiveWindow.Close False
End Sub
--------------------------------------------------------------------------------
No.6
- 回答日時:
No.5 の説明
新しいブックを作って、それに対象部分を貼り付けて名前を付けて保存しているだけです。
何回もご解答頂きありがとうございます。
No.5は最初のやつに似てますね。
私もよく似たところまで考えたのですが、
ここがわからなかったです。
↓
Workbooks.Add
ActiveSheet.Paste
>新しいブックを作って、それに対象部分を貼り付けて名前を付けて保存しているだけです。
新しいブックを作って、対象部分を貼り付けた場合、
出力するシートはアクティブシート(新しいブックの)になるんですね。
何回もご解答して頂きありがとうございます。
年末ですが、良いお年をお迎えください。
機会がありましたら、またお願いします。
ベストアンサーはNo.5の方につけておきます。
今回はご解答ありがとうございます。
No.4
- 回答日時:
「C10:D12」を使う時の削除する部分だけのコードを提示しておきます
--------------------------------------------------------------------------------
Range(Cells(1, 5), Cells(Rows.Count, Columns.Count)).Delete Shift:=xlToLeft
Range(Cells(13, 1), Cells(Rows.Count, Columns.Count)).Delete Shift:=xlUp
Range(Cells(1, 1), Cells(Rows.Count, 2)).Delete Shift:=xlToLeft
Range(Cells(1, 1), Cells(9, Columns.Count)).Delete Shift:=xlUp
--------------------------------------------------------------------------------
※ 重複して削除している部分もありますが、こちらの方が変更が楽だと思います。
No.3
- 回答日時:
No.2 へのお礼について
「Rows.Count」は最終行、「Columns.Count」は最終列です。
つまり「Range(Cells(1, 3), Cells(3, Columns.Count)).Delete Shift:=xlToLeft」は、Excel2003以前は「C1:IV3」、Excel2007以降ならば「C1:XFD3」を削除して左に詰める。
「Range(Cells(4, 1), Cells(Rows.Count, Columns.Count)).Delete Shift:=xlUp」は、Excel2003以前は「A4:IV65536」、Excel2007以降ならば「A1:XFD1048576」を削除して上に詰めると言う事になります。
なお、今回は左上のエリアだったので右側と下側を削除するだけで良かったのですが、端ではない時は右側と下側を削除してから、上側と左側を削除すればエリアがずれないのでやりやすいと思います。
No.2
- 回答日時:
全体を見直しました。
以下のような感じで良いと思います。--------------------------------------------------------------------------------
Sub Sheet2_copy()
Dim book1 As Workbook
Dim i As String
i = Range("B5").Value
Worksheets("Sheet2").Copy
Range(Cells(1, 3), Cells(3, Columns.Count)).Delete Shift:=xlToLeft
Range(Cells(4, 1), Cells(Rows.Count, Columns.Count)).Delete Shift:=xlUp
Set book1 = ActiveWorkbook
book1.SaveAs Filename:="C:\B\Test-" & i & ".html", _
FileFormat:=xlTextPrinter
ActiveWindow.Close False
End Sub
--------------------------------------------------------------------------------
※「prn」形式での保存はエリア指定できないので、不要な部分を削除しています。
※ ちなみに「Close」の後の「False」は、ワークブックを閉じないという意味ではなく、閉じるときの確認メッセージを表示しないと言う意味になります。
ご解答ありがとうございます。
頂いたマクロで希望通り動作しました。
本当にありがとうございます。
すいませんが、ご面倒でなければ、以下の件について教えて頂ければありがたいです。
この2行が何をやってるのか全くわからないです
↓
Range(Cells(1, 3), Cells(3, Columns.Count)).Delete Shift:=xlToLeft
Range(Cells(4, 1), Cells(Rows.Count, Columns.Count)).Delete Shift:=xlUp
Cells(1, 3)=C1、Cells(4, 1)=A4ですよね。
こんなところから何をやっているんですか?
Columns(列)、Rows(行)をカウントしているのは何となくわかります。
ですが、カウントするならCells(1, 1)からCells(3, 2)だと思うのですが?
↓
出力するエリアが「C10:D12」などに変更になった時に、
変数を自分で変更する必要があります。
なのでエリアを特定するために、何をやっているのか知りたいです。
※長方形で選択できるエリアでないとダメなことくらいはわかります。
>
※ ちなみに「Close」の後の「False」は、ワークブックを閉じないという意味ではなく、閉じるときの確認メッセージを表示しないと言う意味になります。
↓
そうでした。prnの新規ブックを出力する時に、
毎回、確認されると煩わしいので、確認なしで出力するようにしたのを忘れてました。
No.1
- 回答日時:
多分「.」が抜けているだけだとおもうので「'Worksheets("Sheet2").range("A1:B3")Copy」を「Worksheets("Sheet2").Range("A1:B3").Copy」にしてください。
ご解答ありがとうございます。
確かに「.」が抜けていますね。
ですが、ご指摘通り「.」を追加して実行してみたところ、
アクティブシートがprnで出力されます。
しかも、ワークブックが閉じてしまします。
※エラーメッセージなしです
先のマクロをそのまま実行した時は
※シングルコーテーションの構文がそのままない状態は以下のとおりです
↓
「sheet2」全体がprnで出力される
ワークブックは閉じないで開いたままま
※「book1.Close False」が機能している
動作がムチャクチャに感じます。
単純なことだと思うのですが、今回はさっぱりわからないです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/11 13:29
- その他(プログラミング・Web制作) python文字化けエラーが発生しているようです 3 2022/04/13 19:41
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- その他(プログラミング・Web制作) python OpenPyXLを使って出力結果をエクセルに書き込み 2 2022/06/04 19:46
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) 【VBA】Excelの特定範囲のセルを画像で保存したい 2 2023/01/25 13:06
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/03/02 08:40
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/03/07 14:05
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フォルダが削除できない
-
write.exeとは?
-
windowsに最初から付属されてい...
-
家族でPCを共有していたユー...
-
プログラムの削除(初心者です)
-
【領域を広げたい】TOSAPINS と...
-
数学の教科書で使われているxや...
-
向かって右側、正面右側とは?
-
学習机の右側と左側、どっちに...
-
LW5.6jのユーザーガイドがほし...
-
行書体の無料フリーフォント
-
wordのA4半ページとは何文字く...
-
至急WordをPDFに変換すると文字...
-
「請」の旧字体の表示方法
-
異体字の倉について
-
キャノンプリンターPIXUS MG553...
-
舞台の右が上手、なぜ右なの?
-
Excel上に旧漢字を入力したい
-
TEXのPATHについて・・・
-
メール添付したPDFファイルが文...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【領域を広げたい】TOSAPINS と...
-
スタートアップに何か分からな...
-
メール削除の警告音を消したい。
-
write.exeとは?
-
ダウンロードした圧縮フォルダ...
-
PGApplicationがタスクバーから...
-
MS-IMEは使わないので削除した...
-
【VBA】特定のセルをprnで保存...
-
Lenovo の余計なアイコンを消し...
-
アプリケーションを削除できない
-
読み取り属性の解除ができない...
-
プログラムの変更と削除 時間...
-
dynabook ランチャー用バナー...
-
95での
-
パソコンのエラ-表示への対処方法
-
「Windows Live Messenger」 削...
-
「ユーザのログオンやログオフ...
-
スタートアッププログラムの削除
-
インターネットエキスプローラー
-
bingの削除方法を教えてください
おすすめ情報