teratail header banner
teratail header banner
質問するログイン新規登録
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

0回答

220閲覧

グラフシートのビジュアル調整をVBAで行いたい!

yumknd

総合スコア2

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2022/06/13 07:27

0

0

タイトルの通り、グラフシートをVBAで調整したいです。

下記のコードは①②のように動きます。
⓵CSVファイルのデータをExcelファイル内の元々作成しておいたにインポート
②インポートしたデータからピボットテーブルを別シートに作成し、別シートにグラフ化まで行う

そして、このコード内にグラフシートを調整するコードを追加したいのですが、どこに何を加えたらいいでしょうか。
具体的には、
・グラフシートの印刷向きを縦向きにしたい
・Y軸の名前のフォントサイズを自動で変わるようにしたい
フォントサイズが大きくて全て入りきらないため
・横棒グラフ要素の色を変えたい
・横棒グラフの合計値をグラフの上(外)に表示したい

Sub CSVファイルを読み込みグラフ作製()
Dim Csv_Import_File 'Excelファイルに取り込むCSVファイルの名前を入れ込む変数'
Csv_Import_File = Application.GetOpenFilename("CSVファイル,*.csv") 'CSVファイルを選択する'
If Csv_Import_File = "False" Then Exit Sub 'キャンセルなら終了'

Dim ws As Worksheet Set ws = ThisWorkbook.Worksheets("〇〇データ") ws.Range("A1:ZZ100000").ClearContents '「〇〇データ」シートのセル「A1~ZZ100000」をクリアする' With Workbooks.Open(Csv_Import_File) .Sheets(1).Cells.Copy ws.Range("A1") '全てのデータをこのブックの「〇〇データ」シートにコピー' .Close 'CSVファイルを閉じる' End With With ws.Columns("O") 'O列を指定’ .Replace what:="AAA", replacement:="AAAA" 'AAAという文字列をAAAAに変換' .Replace what:="BBB", replacement:="BBBB" 'BBBという文字列をBBBBに変換’ .Replace what:="CCC", replacement:="CCCC" 'CCCという文字列をCCCCに変換’ End With '「ピボットテーブル」というシートを最後尾に追加する Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = "ピボットテーブル" '元データの範囲を格納 Set A = Worksheets("〇〇データ").Range("A1").CurrentRegion 'ピボットテーブルを作成する ActiveWorkbook.PivotCaches.Create(xlDatabase, A).CreatePivotTable Range("A3") 'フィールドを設定 With ActiveSheet.PivotTables(1) .PivotFields("名前").Orientation = xlRowField '行フィールドを設定 .PivotFields("グラフ化したいデータ").Orientation = xlColumnField '列フィールドを設定 .PivotFields("グラフ化したいデータ").Orientation = xlDataField '値フィールドを設定 Dim p As PivotItem 'グラフに表示する列ラベルを指定する For Each p In .PivotFields("グラフ化したいデータ").PivotItems p.Visible = (p.Name = "AAAA" Or p.Name = "BBBB" Or p.Name = "CCCC" Or p.Name = "〇〇〇〇") '指定したい列ラベル Next End With 'グラフシートを追加 Charts.Add.Name = "名前別 グラフ化したいデータ" ' 位置を指定せずに追加 ActiveChart.Move After:=Sheets(Sheets.Count) ' 末尾へ移動 'グラフを設定する ActiveChart.ChartType = xlBarStacked '集合横棒グラフにする ActiveChart.SetSourceData Worksheets("ピボットテーブル").Range("A3").CurrentRegion '参照範囲を設定

ココまで皆様に教えて頂きながら、ネットで調べながら作成したコードです。
分かりづらい質問で恐縮なのですが、何卒、アドバイスまたは解をいただけると嬉しいです。

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問