tamao234のブログ

物欲少なめのOLの剥き出し記録

VBAのメモ

ループ処理でエクセルを保存

■デスクトップのパスを自動取得

Dim WSH As Object 
Set WSH = CreateObject("Wscript.Shell") 

Dim DesktopPath As String 
DesktopPath = WSH.SpecialFolders("Desktop")   
Set WSH = Nothing     

■日付
'YYYYMMDD1, YYYYMMDD2を宣言
Dim YYYYMMDD1, YYYYMMDD2 
'年月日 
YYYYMMDD1 = Format(Now(), "yyyy/mm/dd")
'年月日「/」なし。
YYYYMMDD2 = Format(Now(), "yyyymmdd")

■ループ処理
Dim i As Long: i = 56    'iに56を代入

'Sheets(1)の56行以降かつ1列目に入力がある場合は以下をループで実行
Do While Sheets(1).Cells(i, 1).Value <> ""   

'Sheets(2)("A1")に日付を入力
Sheets(2).Range("A1").Value = YYYYMMDD1           
'Sheets(2)("A1")にSheets(1)(i行目, 1列目)の値を入力
Sheets(2).Range("A2").Value = Sheets(1).Cells(i, 1).Value
' FilNameは、Sheets(1)(i行目, 1列目)※保存時の値に使用     
FilName = Sheets(1).Cells(i, 1).Value         

' i は 1ずつ増える
i = i + 1              

'AとBを新規Excelへコピー
Sheets(Array("A", "B")).Copy           
ActiveWorkbook.SaveAs Filename:=DesktopPath & "\" & YYYYMMDD2 & "abcabc" & FilName.xlsx", _     

FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False         
ActiveWindow.Close   
Loop

End Sub

その他

■メッセージボックス
MsgBox "処理完了"

Excelシート内の棒グラフ操作

全グラフの凡例を削除   
Dim cho As ChartObject       
Worksheets(1).Select
For Each cho In ActiveSheet.ChartObjects     
cho.Chart.HasLegend = False

グラフを太くする(グラフ間隔を狭くする)
For Each cho In ActiveSheet.ChartObjects     
cho.Chart.FullSeriesCollection(4).Select     
ActiveChart.ChartGroups(1).GapWidth = 4   
Next