以下の様な他の方に組んで頂きました、動作段階でファイルの場所、ファイル名(開く、保存共)を聞いて来ますが、特定場所の特定ファイル名(disktop,ファイル名ABC)にするには、どこを変更すれば宜しいでしょうか?超初心者の為解りません教えて下さい。
Sub Sample()
Dim WB0 As Workbook
Dim WS0 As Worksheet
Dim WB1 As Workbook
Dim WS1 As Worksheet
Dim WB2 As Workbook
Dim WS2 As Worksheet
Dim strFileName As String
Dim dic As Scripting.Dictionary
Dim vntData As Variant
Dim vntResult As Variant
Dim strKey As String
Dim vntRow As Long
Dim dic_i As Long
Dim i As Integer
Dim vntYYYY As Variant
Set WB0 = ThisWorkbook
strFileName = Application.GetOpenFilename("Excelファイル(*.xls),*.xls", , "クロス集計ファイルを選択してください")
If strFileName = "False" Then
MsgBox "ファイル選択がキャンセルされました。処理を中止します"
Exit Sub
End If
Do
vntYYYY = Application.InputBox("集計年度を数字4桁で指定してください", "年度指定", , , , , , 1)
If VarType(vntYYYY) = vbBoolean Then
MsgBox "年度指定がキャンセルされました。処理を中止します"
Exit Sub
End If
If IsNumeric(vntYYYY) And Len(vntYYYY) = 4 Then
Exit Do
Else
MsgBox "年度指定に誤りがあります。再入力してください " & vntYYYY
End If
Loop
'集計元ファイル
Set WB1 = Workbooks.Open(strFileName)
Set WS1 = WB1.Worksheets(1)
'集計先ファイル(新規追加)
Set WB2 = Workbooks.Add(xlWBATWorksheet)
Set WS2 = WB2.Worksheets(1)
'集計元データを配列に取得
vntData = WS1.Range("A1").CurrentRegion.Value
'集計先データの配列を確保(縦・集計元データ数、横・転記列数)
ReDim vntResult(1 To UBound(vntData), 1 To 18)
'Scripting.Dictionaryを生成
Set dic = New Scripting.Dictionary
'データ集計 集計キーはA列
For vntRow = 2 To UBound(vntData, 1)
'集計キーに存在しなかったら、キー追加
strKey = vntData(vntRow, 1)
If Not dic.Exists(strKey) Then
dic_i = dic_i + 1
dic(strKey) = dic_i
'初期値の設定
vntResult(dic_i, 1) = strKey
For i = 2 To 18
vntResult(dic_i, i) = 0
Next
End If
'集計結果を計算
If Val(vntData(vntRow, 2)) = Val(vntYYYY) - 2 Then
vntResult(dic(strKey), 2) = vntResult(dic(strKey), 2) + vntData(vntRow, 3)
End If
If Val(vntData(vntRow, 2)) = Val(vntYYYY) - 1 Then
vntResult(dic(strKey), 3) = vntResult(dic(strKey), 3) + vntData(vntRow, 3)
End If
If Val(vntData(vntRow, 2)) = Val(vntYYYY) Then
For i = 4 To 18
vntResult(dic(strKey), i) = vntResult(dic(strKey), i) + vntData(vntRow, i - 1)
Next
End If
Next
Set dic = Nothing
WB1.Close False
If dic_i > 0 Then
WS2.Range("A1").Resize(, 18).Value = _
Array("客先", Val(vntYYYY) - 2 & "年度", Val(vntYYYY) - 1 & "年度", Val(vntYYYY) & "年度", _
"上期計", "下期計", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月", "1月", "2月", "3月")
WS2.Range("A2").Resize(dic_i, 18).Value = vntResult
MsgBox "集計が完了しました"
Else
WB2.Close False
MsgBox "集計データがありませんでした"
End If
End Sub
No.1ベストアンサー
- 回答日時:
>WS2.Range("A2").Resize(dic_i, 18).Value = vntResult
ws2.SaveAs Filename:=CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\ABC.xls" '←追加
>MsgBox "集計が完了しました"
と言う事ですか?
この回答への補足
有難うございます、早速行ってみます。説明不足がありました、このプログラムではパラメータに入力したDATAに対し、過去3年間出ますが単年度、あるいは複数年度出す為には、どうしらいいですか?追加質問のようで、すみません
補足日時:2009/06/04 14:56お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAが止まります。 1 2022/09/02 14:51
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ACCESSのクエリで集計で、先頭...
-
FROM の中で CASE を使えるでし...
-
access 存在しない項目を”0件”...
-
「警告 : NULL 値は集計または...
-
絶対値ごとに集計したい
-
Accessで別テーブルの個数をユ...
-
アクセスクエリ 締め日毎で絞...
-
アクセスクエリの計算
-
VBA 得意先ごと且つ日付ごとに...
-
特定場所、ファイル名の変更
-
アクセス レポートのテキスト...
-
ACCESS レポートでページごとに...
-
クロス集計の結果を元に戻す方法
-
accessクロス集計で前月21日~...
-
桐の集計(集計行設定のこと)...
-
Access2013で、CSV出力時にカン...
-
アクセスクロス集計
-
Access 抽出データ件数のカウン...
-
AccessからExcelへエクスポート...
-
複数列フィールド値のクロス集計
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ACCESSのクエリで集計で、先頭...
-
FROM の中で CASE を使えるでし...
-
AccessからExcelへエクスポート...
-
複数列フィールド値のクロス集計
-
VBA 得意先ごと且つ日付ごとに...
-
Accessフォームにクロス集計ク...
-
access 存在しない項目を”0件”...
-
桐の集計(集計行設定のこと)...
-
「警告 : NULL 値は集計または...
-
クロス集計の結果を元に戻す方法
-
Accessで別テーブルの個数をユ...
-
Access 抽出データ件数のカウン...
-
MS-Accessのクロス集計クエリと...
-
アクセス レポートのテキスト...
-
accessクロス集計で前月21日~...
-
クエリを使って縦に一行ずつ足...
-
Accessで年齢から年代ごとの集計
-
レポートウィザードの集計のオ...
-
絶対値ごとに集計したい
-
アクセスクエリ 締め日毎で絞...
おすすめ情報