お世話になっております。Excel VBA 初心者です。
出力されたCSVファイルを取り込み、別のExcelファイルにコピペする作業をVBAにて行いたいと考えておりますが、上手くできず困っています。
以下のような処理をするにはどのようにすればよいのでしょうか。ご教授いただけるとありがたいです。
①貼り付け先のExcelからマクロ実行
↓
②CSV読み込み
↓
③CSVの「B7:AZ100」のセルをコピー
↓
④貼り付け先のExcelのアクティブになっているシートの「BF10」に
先ほどコピーしたものを値貼り付け
↓
⑤CSVは保存せずに閉じる
以上です。
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
こんばんは。
下記検索した記事を元に組み立ててみました。動作確認していませんので、
エラーになる可能性もありますが、下記でどうでしょうか?
大元は、CSVをExcelブックとして開くVBAを参考にしています。
https://excel-ubara.com/excelvba5/EXCEL111.html
Sub CSV入力3()
Dim varFileName As Variant, myNewBook As Workbook
varFileName = Application.GetOpenFilename(FileFilter:="CSVファイル(*.csv),*.csv", Title:="CSVファイルの選択")
If varFileName = False Then
Exit Sub
End If
Set myNewBook = Workbooks.Open(Filename:=varFileName)
ActiveSheet.Range("B7:AZ100").Copy
ThisWorkbook.Activate
Range("BF10").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
myNewBook.Close SaveChanges:=False
End Sub
お世話になっております。
情報が少なかったにも関わらず、
コードを書いていただきありがとうございました。
こちらで動作確認を行いましたが、問題なく動作しました。
ありがとうございます。
No.3
- 回答日時:
こんにちは
初心者向けの回答で出は無いと思いますが許してください
無視して頂いても良いです。
>出力されたCSVファイルを
何処からCSVファイルが出力(作成)されたのか、この部分は重要です
既に解決されているようなので良かったのですが
Excelから作成されたCSVなのだと思います
また、加工の必要がないデータなのでしょう。
CSVファイルは区切り文字で分けられたテキストです
従って区切り文字はカンマ、タブなど何なのか
更に出力されたアプリケーションによっては
文字コードが何なのか、
Excelに抽出しても問題が発生しないデータなのか
0・・・ や -10 など演算子などが先頭文字などにあるデータ
この機会にCSVファイルについては少しお調べになる事を勧めます
Workbooks.Openでcsvファイルを開くのは、早めに卒業した方が良いと思います
私も昔はCSVファイルをExcelに紐づけて開いたりしていましたが
今はVBAや手作業でもExcelブックとして開く事はしていません。
リボンの 外部データの取り込み機能(メソッド)やそれで記録される
マクロなどを使っています。
今回は何もデータ加工を必要としないようなので
テキストで開く例のサンプルです。
Sub sample()
Dim csvFile As String, delimiter As String
Dim ary
Dim start_row As Long, end_row As Long
Dim start_clm As Long, end_clm As Long
csvFile = Application.GetOpenFilename _
(FileFilter:="CSVファイル(*.csv),*.csv", Title:="ファイル選択")
If csvFile = "False" Then Exit Sub
delimiter = ","
start_row = 7: end_row = 100 '取得範囲行
start_clm = 2: end_clm = 52 '取得範囲カラム 'B~AZ
ary = aryCsv(csvFile, delimiter, start_row, end_row, start_clm, end_clm)
'出力セル
Worksheets("?").Range("BF10").Resize(UBound(ary, 1) + 1, UBound(ary, 2) + 1) = ary
End Sub
Public Function aryCsv(file As String, delimiter As String, _
start_row As Long, end_row As Long, start_clm As Long, end_clm As Long) As Variant
Dim i As Long, j As Long, n As Long
Dim buf As String
'取得データ範囲
ReDim ary(end_row - start_row, end_clm - start_clm)
n = FreeFile
Open file For Input As #n
Do Until EOF(1) '最後まで
Line Input #n, buf
i = i + 1
If i >= start_row And i <= end_row Then
On Error Resume Next 'Split1004回避
For j = 0 To UBound(ary, 2)
ary(i - start_row, j) = Split(buf, delimiter)(j + (start_clm - 1)) '区切り文字カンマ
Next
End If
If i = end_row Then Exit Do '必要行以上ループしない
Loop
Close #n
aryCsv = ary
End Function
説明が無いと解らないかも知れませんが、
すでに解決されているようなので割愛します。
お世話になっております。
貴重なご意見ありがとうございます。
また、サンプルまで載せて頂きありがとうございます。
今後、マクロを使う機会が増えそうなので、これを機に勉強してみようと思います。
No.2
- 回答日時:
>上手くできず困っています。
いまどんなの書いてるのか
そこを示してからでしょ。
まずCSVを指定するとこが抜けてます。
そのCSVを貼り付け先のアクティブシートに読み込んだほうが良いと思います。
CSVを開く必要はないので閉じる必要もないと思います。
お世話になっております。
ご指摘ありがとうございます。
>いまどんなの書いてるのか
>そこを示してからでしょ。
すみません。記載していませんでした。
現状を下記に記載します。
Sub Read_Click()
'画面更新停止
Application.ScreenUpdating = False
Dim FileName As String 'ファイル名
'ファイル選択画面を開いてファイルを選択する
FileName = Application.GetOpenFilename("ファイル,*.csv")
'ファイル選択画面でキャンセルボタンを押下した場合、処理を終了する
If FileName = "False" Then
Exit Sub
End If
ActiveSheet.Range("B7:AZ100").Copy
ThisWorkbook.Activate
Range("BF10").Select
ActiveWindow.Close
End Sub
ActiveSheet.Range("B7:AZ100").Copy以降の処理がうまく動かず、
困っていました。
>まずCSVを指定するとこが抜けてます。
すみません。ご指摘ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) CSVファイルでVBAを動かす方法 3 2023/04/04 10:22
- Visual Basic(VBA) VBA初心者です。電話番号の数字の前に0を表示させたいです。 2 2022/12/14 03:58
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) マクロを教えてください。 7 2023/06/01 19:47
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Excel(エクセル) エクセルでcsvファイルを開いてVBAを使いたい 7 2022/04/28 11:12
- Visual Basic(VBA) VBAで特定の場所にあるCSVファイル(複数)から特定場所を抜き出してExcelに転記したいです。 11 2023/05/23 16:29
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Excel(エクセル) マクロVBA別Excelブックにデータ転記 2 2022/07/10 23:35
- Excel(エクセル) csvに別のExcelの文章を差し込む 2 2023/04/01 16:06
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAで開いているファイ...
-
アクセス クエリを別のファイ...
-
エクセルで複数のコメントのサ...
-
ファイルサーバ上のファイルが...
-
バッチファイル 別ファイルにリ...
-
パワポでスライドをコピーでき...
-
Gitについて質問。 クローンし...
-
バッチファイル XCOPYで上書き...
-
エクセルのハイパーリンクがコ...
-
frxファイルの役目
-
エクセルのマクロについて教え...
-
再インストール出来ません。
-
vbsでExcelのシートをコピーす...
-
iPhoneのメモ帳データをパソコ...
-
xcopyでのバッチコピー方法でコ...
-
エクセル2010、図が大きすぎま...
-
Excel VBAで値コピーが使用でき...
-
開いている別のファイルにExcel...
-
Vba初心者です。下記のコード助...
-
エクセルのマクロについて教え...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで複数のコメントのサ...
-
現在のブックを閉じないで、マ...
-
エクセルのマクロについて教え...
-
frxファイルの役目
-
バッチファイル XCOPYで上書き...
-
エクセルのハイパーリンクがコ...
-
エクセルVBAで開いているファイ...
-
ファイルサーバ上のファイルが...
-
エクセル2010、図が大きすぎま...
-
[エクセル]コピーするとオブジ...
-
バッチファイルのコピーで
-
アクセス クエリを別のファイ...
-
Vba初心者です。下記のコード助...
-
バッチファイル 別ファイルにリ...
-
同じファイル名 上書きしないフ...
-
Gitについて質問。 クローンし...
-
vbsでExcelのシートをコピーす...
-
xcopyでのバッチコピー方法でコ...
-
マインクラフトPCをプレイしよ...
-
ファイルをコピーできない
おすすめ情報