【本日のミッション】
Excel VBA でシートを別ブックにコピーしてフォント・行幅が勝手に変わって印刷レイアウトが崩れるのを解決せよ。
目次
ミッションの概要
Excel VBA でシートを別ブックにコピーしてフォント・行幅が勝手に変わって印刷レイアウトが崩れるのを解決せよ、というのが今回のミッションです。
データには気象庁 過去の気象データを使用させて頂きました。
気象庁 過去の気象データ・ダウンロード
Excelのシートを、VBAで新規ブックの別ファイルにコピーしたら・・・
レイアウトが崩れてしまって、印刷範囲がおかしくなってしまった・・・という状況を解決できた方法をご紹介します。
Excelのバージョン・設定、PCの環境によって個人差があると思いますが、ぜひお試しくださいm(__)m
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
別ブックにシートコピーしたら、フォントや行幅が変わってしまった!!
プロシージャ
作業中のブックの「sheet1」を、新規作成したブックの一番左端にコピーするコードです。
Sub 別ブックにシートコピー() '【変数】 Dim MotoWb As Workbook 'コピー元ブック Dim SakiWb As Workbook 'コピー先ブック '■変数セット Set MotoWb = ThisWorkbook 'このブックをコピー元ブックとして変数「MotoWb」にセット Set SakiWb = Workbooks.Add '新規ブックをコピー先ブックとして変数「SakiWb」にセット '■コピー先ブックの標準フォントの変更 SakiWb.Styles("標準").Font.Name = "MS Pゴシック" '■コピー元ブックシートをコピー先ブックにコピー MotoWb.Worksheets("sheet1").Copy Before:=SakiWb.Sheets(1) End Sub
コピー元ブックとコピー先ブックの環境や設定の違いが原因
コピー元のブックから別ブックにシートコピーした場合、フォントや行幅が変わる原因はブック間で環境や設定が異なるからです。
Excelのバージョンが異なる
Excelはバージョンによって標準のフォントや行の高さが異なります。
Excelバージョン | フォント | 行の高さ |
Excel2013以前 | MS Pゴシック | 13.5 |
Excel2016以降 | 游ゴシック | 18.75 |
新規ブックを作成すると、標準のフォント・行の高さになります。
バージョンの異なるExcelからシートをコピーすると、コピー先の標準フォント・行の高さの影響を受けてレイアウトが崩れてしまいます。
既定フォントを変更している
私はExcel2016以降になってからの「游ゴシック」があまり好きではありません。なので既定フォントを「MS Pゴシック」に変えて使用しています。
既定フォントを「MS Pゴシック」に変更して作ったシートから、既定フォントが「游ゴシック」の環境のブックや、標準フォントが「游ゴシック」の環境のブックにシートコピーすると、コピー先のフォント・行の高さの影響を受けてレイアウトが崩れてしまいます。
【既定フォントの変更方法】
[ファイル]をクリックします。
[オプション]をクリックします。
[基本設定]の[新しいブックの作成時]の「次を規定フォントとして使用」のフォントを任意のフォントに変更します。
<OK>ボタンをクリックすると「フォントの変更を有効にするには、Microsoft Excel を閉じてから、再起動してください。」と表示されるので、Excelを一旦閉じてから開きます。
新規ブックを作成すると、既定フォントが任意のフォントに変更されています。
Excel VBAで別ブックにシートコピーした時にフォントや行幅が変わらないようにする方法
新規ブックを作成すると、全てのセルに「標準」というスタイルが設定されます。
その「標準」スタイルのフォントを変更して、コピー元とのフォントを合わせよう、というのが今回の解決策になります。なので、他にも色々な設定を施されている場合には解決にならないかもしれません・・・。
Styles.Font.Nameプロパティ
セルのスタイルのフォント名を変更します。
Workbook.Styles(スタイル名).Font.Name = フォント名
今回はセルのスタイル「標準」のフォントを「MS Pゴシック」に変更しています。
SakiWb.Styles("標準").Font.Name = "MS Pゴシック"
「游ゴシック」に合わせられた行の高さが、「MS Pゴシック」に合わせられた行の高さに変更されます。
この状態で、コピー元のブックからシートコピーをすると、レイアウトが崩れませんでした。
他の設定や環境に応じてうまくいく場合といかない場合があると思いますが、お試しくださいませ~(^^)/「セルのスタイルのフォント変更」を手動で行う手順
「セルのスタイルのフォント変更」をVBAではなく、手動で行うと下記の手順になります。
[ホーム]ー[スタイル]ー[セルのスタイル]で「標準」を右クリック→「変更」をクリックします。
スタイルダイアログボックスの[書式設定]をクリックします。
セルの書式設定ダイアログボックスの[フォント]タブをクリックします。
フォント名をコピー元の標準フォントに変更し、<OK>をクリックします。
スタイルダイアログボックスが表示され、フォントが変更されたことを確認し<OK>をクリックします。
参照
「数字が文字列として保存されています。」を一括で数字に変換
データ範囲が増減しても参照先が自動で変動する「名前の管理」の設定(Excel)
連動するドロップダウンリストを名前の管理・入力規制・OFFSETを使って「リストが表示されない」を解決(Excel)
Excel 複数セル内の改行(Alt+Enter)を一括で解除する方法
Excel関数を使って 縦の表に連動した(リンクした)横の表を一括で作成せよ
ワイルドカードとは。使い方いろいろ。(Excel)
Excelの改ページの点線を消す方法
Excelの背景にある薄グレーの枠線(罫線)を消す(非表示)方法
非表示になってしまった列を表示させる方法
ファイルを開くと空の画面も同時に開くのを解決(Excel)
図 画像 グラフ ボタン などのオブジェクトが消えてしまった時の表示方法(Excel)
大量の画像やグラフ等のオブジェクトで画面表示が遅いのを解決(Excel)
保護されたシートに対して、このコマンドは使用できません。テーマが変えられない現象を解決(Excel)
離れた複数列をまとめて列番号(数字)で選択する方法(Excel VBA)
Excel VBA で選択した複数のセルにデータ・数式を(Ctrl+Enter のように)一気に入力する方法
エクセル 塗りつぶしで指定した色のカラーインデックスを取得する(Excel VBA)
エクセル セル入力した文字色からカラーインデックスを取得する(Excel VBA)
エクセル 他の人に見られたくないシートを再表示できないようにしてVBAにパスワードを設定する(Excel VBA)
Excel 複数シートの両面印刷
エクセル シートを別ブックにコピーしてフォント・行幅が勝手に変わって印刷レイアウトが崩れるのを解決(Excel)
エクセル VBA シートを別ブックにコピーしてフォント・行幅が勝手に変わって印刷レイアウトが崩れるのを解決(Excel VBA)