[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『CSVデータを実行したxlmsの隣のシートにコピー』(けさ子0点)
すみません教えて頂きたいです。
マクロを勉強して仕事で活かしたいレベルまで達していない初心者です。
マクロを実行したときに
↓
ダイアログが表示されて任意のCSVデータを選択できるようになる
↓
CSVデータを選択するとマクロを起動したxlsmデータの右隣シートに保存される
↓
CSVデータは閉じる(削除はされない)
↓
xlms内のコピーされたシートが表示された状態にする
というのは可能でしょうか。すみませんがよろしくお願いします。
< 使用 Excel:Office365、使用 OS:unknown >
参考に
Sub Test()
Dim myFile As Variant, A As Variant, V As Variant
Dim i As Long, buf As String
myFile = Application.GetOpenFilename("CSVファイル(*.csv),*.csv")
If VarType(myFile) = vbBoolean Then Exit Sub
Worksheets.Add After:=ActiveSheet
Open myFile For Input As #1
Do Until EOF(1)
i = i + 1
Line Input #1, buf
V = Split(buf, ",")
ActiveSheet.Cells(i, 1).Resize(, UBound(V) + 1) = V
Loop
Close #1
MsgBox "終わり!!", vbInformation
End Sub
(ピンク) 2020/05/13(水) 01:57
■1
>ダイアログが表示されて〜
とのことなので、↓が参考になるとおもいます。
http://officetanaka.net/excel/vba/tips/tips154.htm
■2
おっしゃってるCSVがブックとして開いてよいようなものであれば
(1)ブックとして開く (2)開いたブックの1シート目をコピーして、目標ブックの最後のシートの次に挿入する (3)開いたブックを閉じる
CSVをブックとして開くのが適切でない場合
(1)目標ブックの最後のシートの次に新規ブックを追加 (2)追加したシートにCSVデータを「QueryTables.Add」で取り込む
のどちらかでも可能だと思います。
なお、■2の作業をすれば、いずれの方法でも追加シートがアクティブになるとおもいます。
(もこな2 ) 2020/05/13(水) 09:53
誤 新規ブックを追加 正 新規シートを追加
(もこな2 ) 2020/05/13(水) 09:54
(もこな2 )さん、有難いアドバイスとURL本当にありがとうございます。
勉強させていただきます!!
後付けになるのですが
CSVを取り込んだ後のシート名がCSVの名前になって欲しい場合
反映させるのは教えて頂いたコードを大幅にいじらないと無理でしょうか。
試行錯誤して自分で挑戦していますが当然デバックエラーばかり出ています。。
(けさ子-5点) 2020/05/13(水) 22:26
> V = Split(buf, ",") > ActiveSheet.Cells(i, 1).Resize(, UBound(V) + 1) = V > Loop > Close #1
Dim n As Long
n = InStrRev(myFile, "\")
ActiveSheet.Name = Split(Mid(myFile, n + 1), ".")(0)
MsgBox "終わり!!", vbInformation
End Sub
(ピンク) 2020/05/13(水) 22:39
感謝しきれません。本当にありがとうございました。
(けさ子15点) 2020/05/14(木) 00:45
昨日家では完璧に出来たのに職場で使ってみたらエラーでした。職場のエクセルは2010です。
詳細もメモってこれずに帰宅してしまった時点でダメなのですが
コード内の ActiveSheet.Cells(i, 1).Resize(, UBound(V) + 1) = V の部分がデバックに該当していました。
会社の方がのバージョンが2010なせいなのか
CSVの形式が違ったりするのか、それが中身のデータのせいなのか;;
エスパーになってしまうと思うのですが考えられる原因はないでしょうか。
エラーコード覚えてこれば良かったです;;
(けさこ15点) 2020/05/15(金) 00:11
Sub テキトー()
Dim ファイルパス As String
Dim wb As Workbook
Stop '←ブレークポイントの代わり
'▼ダイアログでcsvファイルを選択してもらう
ファイルパス = Application.GetOpenFilename("しーえすぶい,*.csv")
If ファイルパス = "False" Then Exit Sub
'▼CSVをブックとして開いて、オブジェクト型変数にセットする
Set wb = Workbooks.Open(ファイルパス)
'▼自ブックの最後に開いたブックの1番目のシートをコピー挿入する
With ThisWorkbook
wb.Worksheets(1).Copy after:=.Worksheets(.Worksheets.Count)
End With
'▼開いたブックを保存せずに閉じる
wb.Close False
End Sub
(もこな2 ) 2020/05/15(金) 01:47
>コード内の ActiveSheet.Cells(i, 1).Resize(, UBound(V) + 1) = V の部分がデバックに該当していました。 恐らく空行があるのでしょう。
ActiveSheet.Cells(i, 1).Resize(, UBound(V) + 1) = V
を
If UBound(V) > -1 Then ActiveSheet.Cells(i, 1).Resize(, UBound(V) + 1) = V
に変更してみてください。
(seiya) 2020/05/15(金) 17:27
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.