CSVデータをEXCELシートに展開する方法

このQ&Aのポイント
  • CSVデータをEXCELシートに展開する方法について教えてください。シート1にボタンを用意し、クリックするとシート2に展開されるようにしたいです。
  • 上記のコードでは、シート2にデータが取り込まれないようです。どのように修正すればシート2に展開されるでしょうか。
  • よろしくお願いします。
回答を見る
  • ベストアンサー

CSVデータをEXCELシートに展開したい

CSVデータをEXCELシートに展開しようとしています。 シート1にボタンを用意して、クリックするとシート2に展開されるというようなことをしたいのです。 以下のコード(マクロを組んで作られるコードです)だと、シート2に取り込まれないです。 どのようにすればシート2に展開されるでしょうか? Private Sub CommandButton2_Click() Dim SH As Worksheet ' Set SH = Worksheets("Sheet2") With ActiveSheet.QueryTables.Add(Connection:= _ "TEXT;C:\temp\test1.", _ Destination:=Range("A1")) .Name = "test1 .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .TextFilePromptOnRefresh = False .TextFilePlatform = xlWindows .TextFileStartRow = 1 .TextFileParseType = xlDelimited .TextFileTextQualifier = xlTextQualifierDoubleQuote .TextFileConsecutiveDelimiter = False .TextFileTabDelimiter = True .TextFileSemicolonDelimiter = False .TextFileCommaDelimiter = True .TextFileSpaceDelimiter = False .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1) .Refresh BackgroundQuery:=False End With よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.1

ぱっと見ただけでですが、 Set SH = Worksheets("Sheet2") とシート2を変数にセットしただけで、あとはどこでも使ってないので、ActiveSheetはシート1のままですよね。 Set SH = Worksheets("Sheet2") を Worksheets("Sheet2").Activate とするか、あるいは With ActiveSheet.QueryTables.Add(Connection:= _ を With SH.QueryTables.Add(Connection:= _ としてみればうまくいきませんか?

kuriosprj
質問者

お礼

ham_kamoさんありがとうございます。 Worksheets("Sheet2").Activate をいれるとうまくいきました。 それと、SHの使い方ですね。 殆どVBAが解らずにいたので、大変たすかりました。 ありがとうございました。

関連するQ&A

  • Excel "A1"からのデータ取込

    お世話になります。 Excel VBAを使って開発しています。 下記のコードでCSVファイルを読み込んでいます。 データが必ず"AC1"にデータが取込されています。 "A1"からデータを取り込むようにしたいときは、どうすればいいのでしょうか ActiveWorkbook.Worksheets("system-view").Activate sheets("system-view").Select Cells.Select With Selection.QueryTable .Connection = "TEXT;" & nm .TextFilePlatform = 932 .TextFileStartRow = 1 .TextFileParseType = xlDelimited .TextFileTextQualifier = xlTextQualifierDoubleQuote .TextFileConsecutiveDelimiter = False .TextFileTabDelimiter = False .TextFileSemicolonDelimiter = False .TextFileCommaDelimiter = True .TextFileSpaceDelimiter = False .TextFileColumnDataTypes = Array(1) .TextFileTrailingMinusNumbers = True .Refresh BackgroundQuery:=True End With 以上、よろしくお願いします。

  • タブ区切りのファイルを読み込む

    下記のコードでタブ区切りのファイルを読み込もうとしていますが、 Err.Numberの1004が発生して、先に進めません。 カンマ区切りは動作しています。 お手数をお掛けしますが、ご教示ください。 With Selection.QueryTable .Connection = "TEXT;" & nm .TextFilePlatform = 932 .TextFileStartRow = 1 .TextFileParseType = xlDelimited .TextFileTextQualifier = xlTextQualifierDoubleQuote .TextFileConsecutiveDelimiter = False .TextFileTabDelimiter = True .TextFileSemicolonDelimiter = False .TextFileCommaDelimiter = False .TextFileSpaceDelimiter = False .TextFileColumnDataTypes = Array(1) .TextFileTrailingMinusNumbers = True .Refresh BackgroundQuery:=True End With 以上、よろしくお願いします。

  • データ読み込み→数行ごとの折り返しについて

    このようなマクロを作りました。 ------------------------------------------------- Sub test() 'TXTファイル読み込みダイアログボックス Dim FileToOpen As String FileToOpen = Application.GetOpenFilename("テキストファイル (*.txt), *.txt") '読み込んだファイルの計算 With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & FileToOpen, Destination:=Range("B11")) ' .Name = "*" .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = False .RefreshPeriod = 0 .TextFilePromptOnRefresh = False .TextFilePlatform = xlWindows .TextFileStartRow = 4 .TextFileParseType = xlDelimited .TextFileTextQualifier = xlTextQualifierDoubleQuote .TextFileConsecutiveDelimiter = False .TextFileTabDelimiter = False .TextFileSemicolonDelimiter = False .TextFileCommaDelimiter = True .TextFileSpaceDelimiter = False .TextFileColumnDataTypes = Array(1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9) .Refresh BackgroundQuery:=False End With End Sub ------------------------------------------------- これだけでは、B列に並んでしまうだけなのでこれを20データごと次の列に入力できるようにしたいのですがいろいろ調べたのですがわかりませんでした。 読み込むテキストは100行あると考えてください わかる方がいましたらよろしくお願いします。

  • データの取込におけるドライブの指定について

    エクセルのSheet1に設置した集計ボタンによって、Sheet2にCSVを取り込む処理をさせました。 しかし、csvのあるドライブが常に固定されていないためにドライブを選択できるようにしたいのです。 下記はマクロの記録で作成した記述ですが、3行目のHをSheet1のセルA1の値で指定させる方法を教えて下さい。 Sheets2.Select Cells.Select With ActiveSheet.QueryTables.Add(Connection:="TEXT;H:\売上集計表.csv", _  Destination:=Range("A1")) .Name = "売上集計表_29" .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .TextFilePromptOnRefresh = False .TextFilePlatform = xlWindows .TextFileStartRow = 1 .TextFileParseType = xlDelimited .TextFileTextQualifier = xlTextQualifierDoubleQuote .TextFileConsecutiveDelimiter = False .TextFileTabDelimiter = True .TextFileSemicolonDelimiter = False .TextFileCommaDelimiter = True .TextFileSpaceDelimiter = False .TextFileColumnDataTypes = Array(2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1) .Refresh BackgroundQuery:=False End With 素人のため、上記マクロをApplication.Run"@"で処理させています。 他にスマートな記述がありましたらその方法も教えて下さい。

  • Excel 「テキストファイルのインポート」 ダイアログボックスを表示させない方法

    excel2002の「データの取り込み」機能を使って 外部テキストファイルをシート上に直接展開する作業をマクロ記録したところ、 下記のようなマクロコードが自動生成されました。 With Selection.QueryTable .Connection = "TEXT;C:\hogehoge.txt" .TextFilePlatform = 932 .TextFileStartRow = 1 .TextFileParseType = xlDelimited .TextFileTextQualifier = xlTextQualifierDoubleQuote .TextFileConsecutiveDelimiter = False .TextFileTabDelimiter = True .TextFileSemicolonDelimiter = False .TextFileCommaDelimiter = False .TextFileSpaceDelimiter = False .TextFileColumnDataTypes = Array(1) .TextFileTrailingMinusNumbers = True .Refresh BackgroundQuery:=False End With これを走らせると、 「テキストファイルのインポート」ダイアログボックスが開いて、 インポートするファイルを選ぶよう求められるのですが、 開くファイル名も決まっているので、このダイアログが出ないようにしたいのです。 vbaの記述でこのダイアログをすっとばす方法はあるのでしょうか? ご指導のほどよろしくお願いします。

  • 複数個のascファイルを1つのシートにまとめたい.

    データの整理をするように言われ作業をしていたのですが,時間がかかりすぎてしまい他の仕事が出来ません. マクロを使えば作業時間を短縮できることが分かったのですが,簡単なBASICプログラムしか組んだことがなく困っております. 【やりたい事】 1→C:\データ1 というフォルダの中にある20個のascファイルをシート1にまとめ,次にC:\データ2 というフォルダの中にある20個のascファイルをシート2にまとめたい.(フォルダごとにシートを新しくしたい) 2→さらに,それぞれのシートで1個目のデータはA1から,2個目のデータはD1から…20個目はBF1からはじめるようにしたい 3→列の幅を調整して全ての文字が表示されるようにしたい とりあえず,テキストファイルのインポートをやって記録してみたので載せておきます. Sub Macro1() ' ' Macro1 Macro ' ' With Selection.QueryTable .Connection = _ "TEXT;C:\データ1\DATA1117.ASC" .TextFilePlatform = xlWindows .TextFileStartRow = 1 .TextFileParseType = xlDelimited .TextFileTextQualifier = xlTextQualifierDoubleQuote .TextFileConsecutiveDelimiter = False .TextFileTabDelimiter = True .TextFileSemicolonDelimiter = False .TextFileCommaDelimiter = True .TextFileSpaceDelimiter = False .TextFileColumnDataTypes = Array(1, 1, 1) .Refresh BackgroundQuery:=False End With End Sub 皆様,よろしくお願いします

  • このマクロ処理をVBAにしたいのですが…

    テキストファイル→Excelへの取込み処理をVBAで記述したいのですが、上手く行きません。どなたか、ご存知の方いらっしゃいましたらご回答よろしくお願いします。 マクロ処理で試すとこんなカンジなのですが… With ActiveSheet.QueryTables.Add(Connection:="TEXT;C:\temp\S5097.txt", _ Destination:=Range("A3")) .Name = "SXXXX" .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .TextFilePromptOnRefresh = False .TextFilePlatform = 932 .TextFileStartRow = 1 .TextFileParseType = xlDelimited .TextFileTextQualifier = xlTextQualifierDoubleQuote .TextFileConsecutiveDelimiter = False .TextFileTabDelimiter = False .TextFileSemicolonDelimiter = False .TextFileCommaDelimiter = False .TextFileSpaceDelimiter = False .TextFileOtherDelimiter = "|" .TextFileColumnDataTypes = Array(1, 1) .TextFileTrailingMinusNumbers = True .Refresh BackgroundQuery:=False End With End Sub

  • Excelマクロ 繰り返し?の設定方法を教えて下さ

    BetMasterという競馬ソフトに記述されている 「TXT\2」のデータを抽出し、Sheets("出馬表集計")に貼り付け、 「TXT\1」のデータを抽出し、Sheets("結果集計")に貼り付ける 以下のようなマクロを組んでいます。1日終わるごとにTXT\2とTXT\1を作成してこの集計をしていたのですが、約1年間サボってしまい100回近く、このマクロを作動させなければならなくなりました。 そこで、TXT\1~100まで作成して、TXT\2とTXT\1の貼り付けが終わったら、「TXT\4とTXT\3」、「TXT\6とTXT\5」、「TXT\8とTXT\7」...............と「TXT\100とTXT\99」まで繰り返し抽出と貼り付けを行うようにしたいのですがどうしたらよいでしょうか。 問題は、50回繰り返すことと、2回目以降は前回終了の次の行に貼り付けるという点です。 よろしくお願い致します。 'BetMasterから出馬表データの取り込み ActiveWorkbook.Worksheets.Add With ActiveSheet.QueryTables.Add(Connection:= _ "TEXT;C:\BetMaster\TXT\2.", Destination:=Range("A1")) .Name = "1." .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .TextFilePromptOnRefresh = False .TextFilePlatform = xlWindows .TextFileStartRow = 1 .TextFileParseType = xlDelimited .TextFileTextQualifier = xlTextQualifierDoubleQuote .TextFileConsecutiveDelimiter = False .TextFileTabDelimiter = False .TextFileSemicolonDelimiter = False .TextFileCommaDelimiter = True .TextFileSpaceDelimiter = False .TextFileColumnDataTypes = Array(2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, _ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 _ , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, _ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 _ , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1) .Refresh BackgroundQuery:=False End With 'Sheets("出馬表集計")に貼り付け Cells.Select Application.CutCopyMode = False Selection.Copy Sheets("出馬表集計").Select Range("A1").Select ActiveSheet.Paste Sheets("Sheet1").Select ActiveWindow.SelectedSheets.Delete 'BetMasterから結果データの取り込み ActiveWorkbook.Worksheets.Add With ActiveSheet.QueryTables.Add(Connection:= _ "TEXT;C:\BetMaster\TXT\1.", Destination:=Range("A1")) .Name = "1." .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .TextFilePromptOnRefresh = False .TextFilePlatform = xlWindows .TextFileStartRow = 1 .TextFileParseType = xlDelimited .TextFileTextQualifier = xlTextQualifierDoubleQuote .TextFileConsecutiveDelimiter = False .TextFileTabDelimiter = False .TextFileSemicolonDelimiter = False .TextFileCommaDelimiter = True .TextFileSpaceDelimiter = False .TextFileColumnDataTypes = Array(2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, _ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 _ , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, _ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 _ , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1) .Refresh BackgroundQuery:=False End With 'Sheets("結果集計")に貼り付け Cells.Select Application.CutCopyMode = False Selection.Copy Sheets("結果集計").Select   Range("A1").Select ActiveSheet.Paste Sheets("Sheet1").Select ActiveWindow.SelectedSheets.Delete

  • 今日と昨日の日付.CSVファイルを選択し読み込む

    日付.csvのファイルが下記のように同じフォルダーに自動書き出しされています。 20171101.csv 20171102.csv 20171103.csv このファイル群から、今日と昨日のファイルだけを選択して、一枚のxlsシートに 書き出すマクロはどうすればいいでしょうか? 現在は、下記11行目を日々書き直して処理しています。 よろしくご教示をお願いします。 Sub Macro1() ' ' Macro1 Macro ' ' Keyboard Shortcut: Ctrl+a ' Range("B4:E10000").Select Selection.ClearContents Range("B4").Select With ActiveSheet.QueryTables.Add(Connection:= _ "TEXT;Z:\bme280-data\20171130.csv", Destination:=Range( _ "$B$4")) .Name = "No1" .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .TextFilePromptOnRefresh = False .TextFilePlatform = 932 .TextFileStartRow = 1 .TextFileParseType = xlDelimited .TextFileTextQualifier = xlTextQualifierDoubleQuote .TextFileConsecutiveDelimiter = False .TextFileTabDelimiter = True .TextFileSemicolonDelimiter = False .TextFileCommaDelimiter = True .TextFileSpaceDelimiter = False .TextFileColumnDataTypes = Array(1, 1, 1) .TextFileTrailingMinusNumbers = True .Refresh BackgroundQuery:=False Call Macro2 End With End Sub

  • 現在のフォルダからテキストを読み込むエクセルマクロ

    小さな会社で事務仕事をしております。 仕事上、困ったことがあり、どなたか教えて頂きたいです。 テキストファイルをエクセルに読み込み、 ある文字にて区切り、セルに張りつけたいのです。 テキストの数が多いため、マクロを作成したいと思っております。 マクロの記録にて下記(ソース)まで来ているのですが、 実際にやりたいのは、 「現在のエクセルブックと同じフォルダにある」テキストファイルを読み込むことなのです。 私が記録したマクロでは、「固定フォルダ」になっており、 例えば、フォルダ名が変わってしまうと、動作しません(テキストを読み込めません)。 Sub Macro3() ' ' Macro3 Macro ' ' With ActiveSheet.QueryTables.Add(Connection:= _ "TEXT;C:\Users\crown_800\test.txt", Destination:= _ Range("$A$1")) .Name = "test" .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .TextFilePromptOnRefresh = False .TextFilePlatform = 932 .TextFileStartRow = 1 .TextFileParseType = xlDelimited .TextFileTextQualifier = xlTextQualifierDoubleQuote .TextFileConsecutiveDelimiter = True .TextFileTabDelimiter = True .TextFileSemicolonDelimiter = False .TextFileCommaDelimiter = False .TextFileSpaceDelimiter = True .TextFileOtherDelimiter = "[" .TextFileColumnDataTypes = Array(1, 1, 1) .TextFileTrailingMinusNumbers = True .Refresh BackgroundQuery:=False End With End Sub Webにてカレントディレクトリの取得方法を勉強し、 下記ソースに反映しようとはしているのですが、うまくいきません。 どなたかご相談に乗って頂けないでしょうか? よろしくお願いいたします。