[[20230603073422]] 『多くの列がある表で、毎回不要な列を非表示にした』(あらじぃ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『多くの列がある表で、毎回不要な列を非表示にしたい』(あらじぃ)

多くの列がある表で、毎回不要な列を非表示にする作業が手間です。
業務では毎回新規にそのようなCSVをダウンロードして毎回同じ列を非表示にして参照しています。(100列中、参照するのは30列位、決まった70列を非表示)
下記のサイトを参考に、「ユーザー設定のビュー」を作ろうとしたのですが、
ここでできたビューは、そのシートに保存されるとのこと。
https://forest.watch.impress.co.jp/docs/serial/exceltips/1242761.html

でも、私の業務では、毎回毎回業務サーバーから新規のファイルとしてCSVがダウンロードされるので、この「ユーザー設定のビュー」を毎回作るのはかえって手間です。

毎回ダウンロードされるファイルは、行数はダウンロードの機会ごとに増減しますが、列の数も順番も、非表示にしたい列番号もまったく同じです。
ダウンロード直後にボタンを押すか、Excel本体に保存された何かを起動して、既定の非表示を実現できないものでしょうか?

< 使用 Excel:Excel2019、使用 OS:Windows10 >


CSVファイルをエクセルで開いているなら、個人用マクロブックはどうでしょうか。
https://vbabeginner.net/how-to-create-a-personal-macro-book/
(フォーキー) 2023/06/03(土) 07:58:17

 不要な列を非表示にした状態のExcelを作っておき
 一旦開いたCSVを、シートごと作っておいたExcelに
 値貼り付けしてみてはどうでしょう?
(コナミ) 2023/06/03(土) 08:30:27

 あ、CSVだから普通に貼り付けでもいいのか。
(コナミ) 2023/06/03(土) 08:31:48

■1
>SVをダウンロードして〜列の数も順番も、非表示にしたい列番号もまったく同じです。
発想を変えて、いらない行を除外してインポートしてはどうですか?
 【参考】
https://vbabeginner.net/paste-csv-file-to-sheet/

ちょっと複雑なコードが記録されるので戸惑うかもしれませんが、【マクロの記録】で得られたコードを改造していけば目的は達成できると思います。

■2
ここでいう話でもないですが、[[20230425210708]]は解決したのでしょうか?
同時進行するなとは言わないですが、ほったらかしにして新しい質問されると、いい加減なことするなぁという印象になってしまいます。

(もこな2) 2023/06/03(土) 09:19:28


もこなさん、ご指摘いただきありがとうございます。
■1 ダウンロードしてくるシステムは、規定のQueryを個々人が編集することは許されていないので、インポートの際に除外は難しいです。
ご指摘のように、同じ操作で同じ非表示にするので、【マクロの記録】をしておいて、毎回そのマクロを取り込むのが自分には分かりやすいかもしれません。

■2 そうですね。なんかほったらかしと思われてもしかたがないですね。クローズをしていただきたく、その旨書き込んでおきました。失礼しました

(あらじぃ) 2023/06/03(土) 10:23:58


■3
>ダウンロードしてくるシステムは、規定のQueryを個々人が編集することは許されていないので、インポートの際に除外は難しい

多分勘違いしてるとおもいます。
私が言っているのは↓のようなことです。

    Sub 研究用()
        Dim ふぁいるぱす As String
        ふぁいるぱす = "C:\Work\hogehoge.csv"

        With ThisWorkbook.Worksheets("取込用")
            .Rows("2:" & .Rows.Count).Clear
            With .QueryTables.Add(Connection:="TEXT;" & ふぁいるぱす, Destination:=.Range("A2"))
                .TextFileStartRow = 2
                .TextFileColumnDataTypes = Array(1, 9, 1, 1, 9, 1, 9, 9, 1, 1)
                .TextFileCommaDelimiter = True
                .Refresh
                .Delete
            End With
        End With
    End Sub

列数が決まっていて、いらない列も固定なら、【取り込み時に対象にしない】ことにすればいいのではという話です。
システムからcsvをダウンロードするときの話じゃないです。

(もこな2) 2023/06/03(土) 13:09:15


 いらぬお節介ですが。
 ウィザードの 3/3 で、不要な項目たちを一つずつ「削除」にすれば、
 それらの項目は取り込まれないのです。

 その動作をマクロ記録すれば、
 TextFileColumnDataTypesにセットするArrayで9のところが不要項目になることがわかります。

(xyz) 2023/06/03(土) 13:41:03


いつもはCSVファイルはダブルクリックして(Excelで)開いているのですが、これはその操作をせずに、他の操作をすることを言っていますか?すいません、基本的なことで。
(あらじぃ) 2023/06/03(土) 13:50:48

 再掲します。

 >発想を変えて、いらない行を除外してインポートしてはどうですか?
 > 【参考】
 >https://vbabeginner.net/paste-csv-file-to-sheet/
(xyz) 2023/06/03(土) 13:56:30

 単にダブルクリックすると
 ・文字列が日付として誤認識されてしまうとか、
 ・文字列の001 が数値の1と認識されてしまうとか、
 ・文字コードが食い違うとか、
 とか色々と不測の事態に見舞われることがあります。

 上記のQueryを使ったインポートは、そうしたことに柔軟に対応できます。
 項目ごとに書式指定ができたり、項目をスキップできたりと、
 使い勝手がよいものになっています。
 こうした進歩というものを取り入れていくことも有益ではないかと思われます。

 お邪魔しました。
(xyz) 2023/06/03(土) 14:16:26

アクティブシートに対してなさりたい事をマクロブックに作っておけばいいのでは。
と、上の方でアイデアが出てますが・・・。
これが良いのではと私は思います。
なんかのらりくらりと全部作ってくれるのをただ待っているというか
食いついて全部作ってくれる人を待っているだけなようにも感じます。
釣れるかな?
(トペトペ) 2023/06/03(土) 14:28:02

■4
>いつもはCSVファイルはダブルクリックして(Excelで)開いている
もしかしたらご存じかもしれませんが、CSVはExcelブックの仲間ではなくただのテキストファイルです。
なので、【ブックとして開く】のではなく【テキストファイルとしてインポート】してみてはどうか?という話をしました。
xyzさんが説明されているように、ブックとして開くのに比べていくつかメリットがあります。

■5
>毎回不要な列を非表示にする作業が手間です。
>業務では毎回新規にそのようなCSVをダウンロードして毎回同じ列を非表示にして参照しています。
↑の話がCSVファイルを(エクスプローラー等から)ダブルクリックしてブックとして開いたときに勝手にそうなってほしいという話ならばちょっと難しいとおもいます。

作業用のマクロブックでもOKという話であれば

 1. (エクスプローラー等の代わりに)ダイアログを表示してcsvファイルをユーザーに選択してもらう

 【ブックとして扱いたい場合】
 2.ブックとして開いて、いらない行を非表示にする

 【テキストファイルとしてインポートする場合】
 2.新規ブックを用意する
 3.↑に必要な行を除外してインポートする

というアプローチならば目的が達成できる気がします。

■6
いや、(エクスプローラー等から)ダブルクリックしてブックとして開くことに拘りますという話であれば、フォーキーさんのアイデアのように個人用マクロブック使うなり、アドインにするなりして、ブックを開いたときに該当のファイル名なら特定の行を非表示にすることを考えてみてはどうでしょうか?

(もこな2) 2023/06/04(日) 11:44:28


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.