A 回答 (6件)
- 最新から表示
- 回答順に表示
No.6
- 回答日時:
DIR関数が拾ってくる順になる感じのコードです。
<以下コード>
Sub maketestdata(count As Integer)
Dim newBookName As String
Dim newBookPath As String
Dim newBook As Workbook
Dim newSheet As Worksheet
Dim targetColumn As Integer
targetColumn = 3 'C列なら3
For i = 1 To count
newBookName = "test" + CStr(i) + ".xlsx"
newBookPath = ThisWorkbook.path & "\" & newBookName
If Dir(newBookPath) = "" Then
DrawOff
Application.StatusBar = "making " + newBookName
Set newBook = Workbooks.Add
Set newSheet = newBook.Worksheets(1)
With newSheet
For j = 1 To 10
.Cells(j, targetColumn) = i * 100 + j
Next
End With
newBook.SaveAs newBookPath
newBook.Close
DrawOn
Application.StatusBar = False
Else
'MsgBox "既に" & newBookName & "というファイルは存在します。"
End If
Next
End Sub
Sub main()
Dim newBookName As String
Dim newBookPath As String
Dim newBook As Workbook
Dim openBookName As String
Dim openBook As Workbook
Dim openSheet As Worksheet
Dim newSheet As Worksheet
Dim targetColumn As Integer
targetColumn = 3 'C列なら3
newBookName = "fusion.xlsx"
newBookPath = ThisWorkbook.path & "\" & newBookName
If Dir(newBookPath) = "" Then
DrawOff
Application.StatusBar = "making " + newBookName
Set newBook = Workbooks.Add
Set newSheet = newBook.Worksheets(1)
With newSheet
Dim openBookName As String
openBookName = Dir(ThisWorkbook.path & "\*.xlsx")
Dim counter As Integer
counter = 1
Do While file <> ""
Set openBook = Workbooks.Open(ThisWorkbook.path + "\" + openBookName)
Set openSheet = openBook.Worksheets(1)
For i = 1 To 10
.Cells(i, counter) = openSheet.Cells(1, targetColumn)
Next
counter = counter + 1
Workbooks(file).Close
file = Dir
Loop
End With
newBook.SaveAs newBookPath
DrawOn
Application.StatusBar = False
Else
'MsgBox "既に" & newBookName & "というファイルは存在します。"
End If
End Sub
Sub test()
maketestdata (10)
main
End Sub
Sub DrawOff()
Application.DisplayAlerts = False
Application.ScreenUpdating = False
End Sub
Sub DrawOn()
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
No.4
- 回答日時:
こんにちは、
要は、他のファイルの列をコピーし、纏めたいのだと理解しました。
ファイルの場所やシート名など不明なので、こちらから条件を出します。
纏めたいファイルを同じフォルダに入れてください。VBAの書かれたBookと同じでなくても良いです。
纏めるBookにVBAコードを書きます。
ご質問の場合は、ファイル名を配列に入れてソートし列をループ変数などで移動すれば良いですが、ファイル名は例なので
実際にソートで列のインデックスとの関係が保証されるか分かりません。また、4列目をまとめたいなど変更したい場合も
VBAを触る事になり、面倒なので、各条件を変更できるようにシートに出しましたので、条件設定のシートを新規に作成してください。
シート名は condition です。変更する場合は、VBAも変えてくださいね。
シートの内容は、画像を添付しますので、参考にしてください。
簡単な表の説明:
TargetFilesは、ファイル名です。下へ書き足してください。(数は問いません)
TargetColumnは、コピーしたいファイルの列№です。A列なら1、C列なら3です。
InColumnは、纏めるシートの列№です。
TargetSheetIndex:は、コピーしたいファイルのシートインデックスです。一番左にあるシートなら、1です。
InSheetIndex:は、纏めるシートのインデックスです。
Extension:は、ファイルの拡張子です。
設定したら、シートは非表示にしても良いです。
画像は、ご質問のファイルAのシートインデックス1のC列をThisWorkbookのシートインデックス1のA列にコピペします。以下続く
コードは以下に掲示します。
On Error Resume Next は、使いたくないけれどエラールチン書くの面倒なのでごめんなさい。
ファイルが無いなどでエラーになるのを飛ばしますので、上手く動作しないときなどは、On Error Resume Nextをコメントに変えデバッグしてください。
突っ込みどころは、あるかも知れませんが、一例ですので悪しからず。
Option Explicit
Sub Sample()
Dim TargetFiles(), TargetColumn(), InColumn()
Dim wb As Workbook
Dim TargetSheetIndex As Long, InSheetIndex As Long
Dim MaxRow As Long, n As Long
Dim Folder_Path As String, Extension As String
On Error Resume Next
Worksheets("condition").Activate
With ActiveSheet
MaxRow = .Cells(Rows.Count, 1).End(xlUp).Row
TargetFiles = .Range(Cells(2, 1), Cells(MaxRow, 1)).Value
TargetColumn = .Range(Cells(2, 2), Cells(MaxRow, 2)).Value
InColumn = .Range(Cells(2, 3), Cells(MaxRow, 3)).Value
TargetSheetIndex = .Cells(1, 6).Value
InSheetIndex = .Cells(2, 6).Value
Extension = .Cells(3, 6).Value
End With
With Application.FileDialog(msoFileDialogFolderPicker)
.InitialFileName = CreateObject("WScript.Shell").SpecialFolders("desktop")
If .Show = True Then
Folder_Path = .SelectedItems(1) & "\"
End If
End With
If Folder_Path = "" Then Exit Sub
Application.DisplayAlerts = False
Application.ScreenUpdating = False
For n = LBound(TargetFiles) To UBound(TargetFiles)
Set wb = Workbooks.Open(Folder_Path & TargetFiles(n, 1) & Extension)
wb.Worksheets(TargetSheetIndex).Columns(TargetColumn(n, 1)).Copy _
Destination:=ThisWorkbook.Sheets(InSheetIndex).Columns(InColumn(n, 1))
wb.Close savechanges:=False
Next n
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
コードの説明は割愛しますので、必要であれば、返信ください。
No.3
- 回答日時:
こんにちは
>どなたかわかる方お願いいたします。
コードを組むには、あまりにも漠然とした質問なので、なんとも回答のしようがありませんが、手順を記したところで(多分)何の役にも立たないと思われますので、無理やり・・・
こんな雰囲気で可能ではないでしょうか。
ファイルαがActiveSheet(ThisWorkbook)であると仮定しています。
まぁ、具体例を示したからといって、役に立つとは限りませんが…
Sub Sample()
Dim fName(), wb As Workbook
Dim destRange As Range, n As Long
Const targetSheet = 1 'コピー対象シート
Const targetColumn = 3 'コピー対象列
fName = Array("ファイルA.xls", "ファイルB.xls") '対象ブックのパス
Set destRange = ActiveSheet.Columns(1) 'ファイルαと仮定
' 以下、順にコピー処理
For n = LBound(fName) To UBound(fName)
Set wb = Workbooks.Open(fName(n))
wb.Worksheets(targetSheet).Columns(targetColumn).Copy Destination:=destRange
Set destRange = destRange.Offset(0, 1)
wb.Close savechanges:=False
Next n
End Sub
No.2
- 回答日時:
一番めんどくさそうなのはどのファイルをどの列に置くか?の指定方法です。
今回のようにファイル名に列記号が入っているなら指定は不要ですけどね。
ファイルの位置指定はどのようにするつもりですか?
①ファイル選択で即時コピーを繰り返す。(重複コピーの可能性が高くなる)
②最初にコピーリストを作成し、それを基に一挙にコピーする。
③順番は関係なく同じフォルダに有る物を一挙にコピーする。
④その他(具体的に示してください)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルVBA 4 2022/05/14 00:51
- Excel(エクセル) マクロか関数で処理したいのですが、教えて頂けませんか。 8 2022/10/31 15:18
- Visual Basic(VBA) excelにて、特定の列に数字入力してあれば、入力してある行コピーして 別ファイルに張り付ける 2 2022/08/11 05:33
- その他(プログラミング・Web制作) Pythonで、データファイルと列名ファイルを1つのファイルにしたいです。 1 2023/07/27 20:29
- Excel(エクセル) excel 別のフォルダから列コピーする方法 8 2022/12/17 16:24
- Visual Basic(VBA) tatsumaru77様 昨日回答して頂いたものです。 すみませんが、昨日の質問で1つ補足があります 1 2022/05/15 15:06
- Access(アクセス) CSVファイルの「0落ち」にVBA 6 2023/02/02 15:27
- その他(プログラミング・Web制作) エクセルVBA 3 2022/06/11 16:01
- Excel(エクセル) Excel ハイパーリンク設定について 教えてください 例なんですが、 VBAにてファイル1の列Gに 2 2022/11/04 17:52
- Excel(エクセル) 【マクロ】マクロが保存されているエクセルとは、別のエクセルブックの全シートの非表示列を再表示したい 1 2022/12/24 20:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【スプレドシート】IMPORTRANGE...
-
エクセルでファイルを開かずに...
-
Excel 2枚目のブックが開かな...
-
ファイル内にある数字の出現回...
-
CPU使用率が100%となっ...
-
EXCEL:二つのエクセルファイル...
-
エクセルで他のファイルのセル...
-
パワーポイントをエクセルファ...
-
エクセルで「500時間」を「何日...
-
EXCELで上書き保存しないと反映...
-
エクセルで作業時間数や残業時...
-
エクセル0:00と表示される原因
-
エクセルでファイルを閉じても...
-
エクセルを上書き保存したのに...
-
いきなりPDFでPDFファイルを開...
-
エクセル関数の解読サイトなん...
-
Lotus 1-2-3のファイルをExcel...
-
開いてるファイル(エクセル等)...
-
Windows10で、ほかのWindowsで...
-
エクセルのカメラ機能を、700個...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【スプレドシート】IMPORTRANGE...
-
エクセルでファイルを開かずに...
-
ファイル内にある数字の出現回...
-
Excel 2枚目のブックが開かな...
-
CPU使用率が100%となっ...
-
複数のtxtの特定部分を抽出し、...
-
エクセルマクロ 数式【VLOOKUP...
-
マクロで別ファイルのシートコ...
-
エクセルで他のファイルのセル...
-
複数のExcelfファイルをを1つの...
-
PhotoshopでExcelのファイルが...
-
エクセルでハイパーリンクが貼...
-
VBAで集計元のファイル名を取得...
-
MATLABでcsvファイルを読み込も...
-
one drive からExcel onlineを...
-
EXCELを複数起動して別ファイル...
-
Access2010について
-
EXCEL:二つのエクセルファイル...
-
Excel2000でフォルダを移動する...
-
ある特定のExcelファイルの起動...
おすすめ情報
マクロを記録したファイルとは別に、データのファイルがあるので、そのデータのファイルを開くという行為が記録されてないように感じるのですが、どうでしょうか。。。