No.3ベストアンサー
- 回答日時:
推察で回答するのは良くないと思いますが
補足もつかないし、捨てられているのだと思います。が、、、
推察、インボイスが書かれた複数のBookが同じフォルダにあり
そのまとめをフォーマットに従い入力したい。(本来すべての情報を入力してPDFで良いと思う)
例:フォーマットシートの12行は、Book1に書かれている情報、(行間が広いので)
手順
フォーマットファイルを選択
データファイルのフォルダを選択
条件
フォーマットシートは、フォーマットBookのインデックス1にあるものとします。
フォーマットはそのままなので、処理後デスクトップに別名で保存します。
その他、エラーなどの処理は行っていません。
コードの説明は割愛します。
もし、検証する時は、デモファイル(環境)で
エラー、不具合など不明な点があれば、補足してください。。
Option Explicit
'ソートのためのAPI読み出し宣言
Declare PtrSafe Function StrCmpLogicalW Lib "SHLWAPI.DLL" _
(ByVal lpStr1 As String, ByVal lpStr2 As String) As Long
Sub bubble_sort_API(ByRef StrArr() As String) 'ソートのためのAPI
Dim i As Long, j As Long
Dim tmp As String
For i = LBound(StrArr) To UBound(StrArr)
For j = i To UBound(StrArr)
If StrCmpLogicalW(StrConv(StrArr(i), vbUnicode), StrConv(StrArr(j), vbUnicode)) > 0 Then
tmp = StrArr(i)
StrArr(i) = StrArr(j)
StrArr(j) = tmp
End If
Next j
Next i
End Sub
Sub invoice_AG()
Dim i As Long, ix As Long
Dim FormatFileName As String, TrgSht_Name As String
Dim Folder_path As String
Dim FmtFile As Workbook, Sht As Worksheet
Dim trgBook As String, FileType As String
Dim CpDataA, CpDataD, CpDataE, CpDataG
Dim FileName() As String, SaveFilePath As String
Application.ScreenUpdating = False
'フォーマットファイル
FormatFileName = Application.GetOpenFilename("Microsoft Excelブック,*.xls?", Title:="フォーマットファイルを選択")
If FormatFileName <> "False" Then
Set FmtFile = Workbooks.Open(FormatFileName)
Else
Exit Sub
End If
'開いたブックに対象のシート名シートがあるか確認
TrgSht_Name = "インボイス" '対象のシート名
'ダイアログで対象のファイルがあるフォルダをユーザーが選択
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "対象のフォルダを選択してください"
If .Show = True Then
Folder_path = .SelectedItems(1)
End If
End With
If Folder_path <> "" Then
FileType = "\*.xls*"
trgBook = Dir(Folder_path & FileType)
'---ファイルパス取得 start
Do
ReDim Preserve FileName(i)
FileName(i) = trgBook
i = i + 1
trgBook = Dir()
Loop Until trgBook = ""
'---ファイルパス取得 stop
Call bubble_sort_API(FileName()) 'ソート呼び出し
ReDim CpDataA(UBound(FileName)), CpDataD(UBound(FileName))
ReDim CpDataE(UBound(FileName)), CpDataG(UBound(FileName))
For ix = 0 To UBound(FileName)
With Workbooks.Open(Folder_path & "\" & FileName(ix))
For Each Sht In Worksheets '開いたブックに対象のシート名があるか確認
If Sht.Name = TrgSht_Name Then
For i = 3 To Sht.Cells(Rows.Count, 1).End(xlUp).Row
CpDataA(ix) = CpDataA(ix) & Sht.Cells(i, 1).Value & vbCrLf
CpDataD(ix) = CpDataD(ix) & Sht.Cells(i, 4).Value & vbCrLf
CpDataE(ix) = CpDataE(ix) & Sht.Cells(i, 5).Value & vbCrLf
CpDataG(ix) = CpDataG(ix) & Sht.Cells(i, 7).Value & vbCrLf
Next
Exit For
End If
Next
.Saved = True
.Close
End With
Next
With FmtFile.Sheets(1)
For i = 0 To UBound(FileName)
.Cells(i + 12, 3) = CpDataA(i)
.Cells(i + 12, 5) = CpDataD(i)
.Cells(i + 12, 6) = CpDataE(i)
.Cells(i + 12, 7) = CpDataG(i)
Next
End With
'ファイルパス指定
SaveFilePath = CreateObject("WScript.Shell").SpecialFolders("desktop") _
& "\" & "invoice_" & Format(Now, "yyyymmddhhmm") & ".xlsx"
'ファイル保存(別名)
FmtFile.SaveAs FileName:=SaveFilePath, FileFormat:=xlOpenXMLWorkbook
FmtFile.Close
End If
Application.ScreenUpdating = True
End Sub
No.2
- 回答日時:
どちらにボタンを配置するかによりますが
gyo=20
for i=3 to 6
workbooks("先.xls").activesheet.range("C"&gyo)=range("A"&i)
workbooks("先.xls").activesheet.range("E"&gyo)=range("D"&i)
workbooks("先.xls").activesheet.range("F"&gyo)=range("E"&i)
workbooks("先.xls").activesheet.range("G&gyo)=range("G"&i)
gyo=gyo+5
next
リスト側のコードです
わからないのであれば説明が長くなるので無理かと思います
No.1
- 回答日時:
どのようにデータを纏めるのか、読み込むBookに順番があるのかについて不明な感じがします。
1つのBookの1つのSheetのデータ1行を結合セル1塊に貼り付けていったら、かなりの行数になりそうですし。(それで構わないのか否か)
Book毎の仕切りはなくただ続けて貼り付けてよいのかも不明。
画像を添付する際には『完成形』にしておいてくれた方がわかりやすいのでは?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Visual Basic(VBA) 【困っています2】VBA 追加処理の記述を教えてください。 2 2022/08/26 11:42
- Excel(エクセル) マクロVBA別Excelブックにデータ転記 2 2022/07/10 23:35
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Excel(エクセル) フォルダ内の全ブックのシート名を変更したい 7 2022/09/22 21:34
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/05/24 08:33
- Excel(エクセル) 【マクロ】同じフォルダ内にある複数ブックから1つのブック内の1シートにデータを集めたい 6 2022/09/28 18:16
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルのマクロについて教え...
-
Excelのマクロコードについて教...
-
(マクロ)データをAブックからB...
-
VBA 複数のエクセルから一つの...
-
VBSでExcelのオープン確認
-
VBA 実行時エラー 2147024893
-
Excelマクロ 該当する値の行番...
-
Excel VBAでRangeの指定をA1書...
-
エクセルVBAで読み取りパスワー...
-
配列に使うArry関数について
-
VBAで別ブックのシートを指定し...
-
拡張メタファイルにて貼り付け
-
VBA コードを実行すると画面が...
-
【マクロ】違うフォルダにある...
-
ワイルドカード「*」を使うとう...
-
VBA シートをコピーする際に Co...
-
エクセルVBAが途中で止まります
-
フォルダー内の支店ごとのブッ...
-
ユーザーフォームの切り替えに...
-
元データ(ピボッド)を開かずマ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA シートをコピーする際に Co...
-
エクセルVBAが途中で止まります
-
ワイルドカード「*」を使うとう...
-
別ブックをダイアログボックス...
-
(マクロ)データをAブックからB...
-
VBS Bookを閉じるコード
-
VBA 別ブックからコピペしたい...
-
VBA 複数のエクセルから一つの...
-
VBA シート名が一致した場合の...
-
【ExcelVBA】インデックスが有...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
vbaでvbaProjectのパスワード解...
-
VBAで別ブックのシートを指定し...
-
【ExcelVBA】zip圧縮されたCSV...
-
VBA コードを実行すると画面が...
-
【VBA】全シートの計算式を全て...
-
複数のエクセルブックをひとつ...
-
VBA 実行時エラー 2147024893
-
ExcelのVBAです。フォルダ内の...
おすすめ情報