永遠のVBA初心者です。
会社で使用しているソフトのデータをcsvファイル形式でエクセルに落として毎月決まった加工をしています。
現在は一旦落としてからVBAを仕込んだ専用のエクセルシートにコピペしてマクロを使って処理しています。
出来たらソフトからcsvファイルでダウンロードしたエクセルでそのままVBAを動かすことはできないでしょうか?
VBAをコピペしてエクセルをマクロ有効ファイルで一旦保存して・・・と考えたのですが、csv形式のエクセルで直接動かせれば非常に便利だと思いまして。
上記がそのまま実現できなくても、他に簡便な方法あればご教示お願いします。
No.6ベストアンサー
- 回答日時:
No2です
>>パーソナルマクロブックに当該マクロを登録・・・
>の具体的な手順をご教示いただければありがたいのですが。。。
デフォルトではパーソナルブックは作成されていないので、まずは作成する必要があります。
ディレクトリはユーザのAppData下部のMicrosoft\Excel内になりますが、作成の仕方は以下のページをご覧ください。
◇個人用マクロブック(PERSONAL.XLSB)の作成方法
https://vbabeginner.net/how-to-create-a-personal …
一旦、作成しておけば、以降はVBEの画面を表示すると、プロジェクトエクスプローラの欄に「PERSONAL.XLSB」が表示されるようになり、追加の書き込みや編集も可能になります。
こちらのブックにマクロを登録しておけば、エクセルを開いた時に常に参照可能になりますので、CSVファイルであっても、「エクセル」に読み込んだ後であれば参照することができます。
(すでにエクセルデータになっているので・・)
No2にも書きましたし、No4様も言及なさっていますが、CSVデータはエクセルとは別物です。
実際の処理内容がわかりませんけれど、混同なさらないようにしておいた方が、後々のためにも宜しいかと思います。
ショートカットキーの登録は、上記のマクロ作成時にも可能ですが、すでに存在しているマクロに後から割り当てることもできます。
リボンの「開発」-「マクロ」で表示されるダイアログで目的のマクロを選択し、「オプション」からショートカットキーを割り当てることが可能です。
一方で、パーソナルブックはそのPC内のユーザディレクトリ内に保存されますので、複数の人が同じ作業をするような場合、あるいは、特定の人であってもその時によって使用するPCが異なるというような場合には、別の方法の方がよさそうに思います。
お礼が遅くなり申し訳ありません。
何度もご丁寧なご回答ありがとうございます。
#No2のご回答のあと自分でもご提案の「パーソナルマクロブック」を調べてみてご提案のページを見つけて土日に自宅で少し勉強しました。
私のやりたかったことはこれでした。
但し、今回の要求に関してはQchan1962さんの言われる通り、マクロを仕込んだエクセルの空シートにCSVのデータを貼り付けてマクロで処理するのが当方のレベルでは一番、簡単&確実な方法だと思います。
表が大きいのでデータをコピペではなく、マクロをコピペ?という発想になっていました。
今回教えて頂いた「個人用マクロBook」は非常に参考になりましたので今後使わせていただきます。
No.4
- 回答日時:
こんにちは
横から失礼します
>csv形式のエクセルで直接動かせれば非常に便利だと思いまして
CSV形式のデータをExcelに関連付けて使っているのだと理解しました
>直接動すと便利・・うう~ん
>出来たらソフトからcsvファイルでダウンロードしたエクセルでそのままVBAを動かすことはできないでしょうか?
すでに回答にあるように出来ますが、1工程を除けば、これって
VBAが書かれたExcelファイルを用意し、シートにCSVを抽出
VBAでデーター加工
シートのデータをCSV出力
と同じ事?のような・・クリックでCSVを開いて実行するプロセスで無いけれど・・
手作業で処理している事をVBAで処理すれば、各ファイルにVBAは不要でなないかと思います。
CSVデータはあくまでCSVデータなので・・
クリックでCSVを開いてそのまま実行する方法は#3様が提案?している方法で出来ると思いますが
実行条件(対象のみを特定する)を自身で設定する必要があると思います。(かなり重要)
③④の詳細、コードを提示して頂ければ書くことは可能ですが、ご自身で改修できるかな?
余:CSVファイルをExcelに関連付けるのは、諸事情であまりお勧めできないですね。
多分、多くのCSVを扱う方たちは、Excelに関連付けをやめていると思います。
ただ、Excelに関連付けをやめていても、下記のコードは開くプログラムをExcelに選択して開けばOK
PERSONAL.XLSB を使用する方法(初めて使う時のざっくり手順)
新規ブックを含む適当なExcelブックを開きます
マクロの自動記録を実行、実行時、マクロの保存先 を個人用マクロ ブックに変更します
どこかセルを選択、記録終了
VBEを開くとPERSONAL.XLSBがプロジェクトエクスプローラーに作成されているので
標準モジュールに記録されたマクロを削除、(必要ないと思いますので)
PERSONAL.XLSBのThisWorkbookモジュールに
Option Explicit
Dim WithEvents xlApp As Application
Private Sub Workbook_Open()
Set xlApp = Application
End Sub
Private Sub xlApp_WorkbookOpen(ByVal Wb As Workbook)
Dim fso As Object
Dim ext As String
Set fso = CreateObject("Scripting.FileSystemObject")
ext = fso.GetExtensionName(Wb.Path & "\" & Wb.Name)
If Not Wb Is ThisWorkbook And LCase(ext) = "csv" Then
MsgBox Wb.Name & "が開きました"
Wb.Worksheets(1).Cells.Copy ThisWorkbook.Worksheets(1).Range("A1")
ThisWorkbook.Worksheets(1).Copy
ThisWorkbook.Worksheets(1).Cells.ClearContents
End If
Set fso = Nothing
End Sub
開いているExcelを保存して閉じます。(PERSONALも保存)
CSVファイルを開くと上記コードが実行されます。(正確にはExcelを開くと)
掲示コードの処理内容
Excel(他のExcel関連ファイル)が開く時に
開いたブックに対して(この場合csv)
If Not Wb Is ThisWorkbook And LCase(ext) = "csv" Then
If 内の処理を実行します
暫定で行っている処理
開いたファイル名をメッセージ
開いたブックの1シートをPERSONAL.XLSB 1シートにコピー
コピーしたシートを新規ブックで出力
PERSONAL.XLSB 1シートをClearContents
この方法だとCSVを閉じる時、保存を求めるメッセージが出力されますが
シートを使わない方法にするか、VBAで元CSVを閉じれば、回避できます。
ざっくりしたコードなのでまとめていませんが、
この処理の中に③と④を組み込み元ファイルは保存せずに
新規ファイルはCSVファイルとして所定場所に保存すればよいと思います
PERSONAL.XLSBはExcelを扱う時にすべてのファイルに対して
付きまとうので、私は使いません。
実験してみて良く無ければ、PERSONAL.XLSBを削除してください
PERSONAL.XLSBの削除方法
https://lilia-study.com/excel/excel-vba/macro/ko …
お礼が遅くなりすみませんでした。
土日に各種ご回答を検討してみた結果、やはりおっしゃる通り知らないVBAを組むよりはご提案の方法が確実だと思いました。
csvファイルとエクセルファイルの保存方法を工夫すれば済むことでした。
ご丁寧なご回答ありがとうございました。
拙速な質問でお手数をおかけし申し訳ありませんでした。
>VBAが書かれたExcelファイルを用意し、シートにCSVを抽出
>VBAでデーター加工
>シートのデータをCSV出力
>と同じ事?
No.3
- 回答日時:
「エクセルに落とす」「ダウンロードしたエクセル」「csv形式のエクセル」というのがちょっとわかりづらいので、ちょっと整理しましょう。
1.あるソフトウェアからCSV形式にてデータをエクスポート(書き出し)
2. 1のCSVファイルをエクセルで開き、その内容を、別の(処理専用の)エクセルファイルの特定のシートにコピー&ペースト
(コピー元のCSVファイルは保存せずに閉じる)
3.専用シート上にてマクロを実行
という流れでよいのでしょうか?
最終的に必要なのは特定の処理がなされたCSVファイルですか?
いずれにせよ、やりたいことの詳細がわからないと具体例が出しにくいかと思います。
一連の業務を簡便化するにあたって、最もアプローチしやすいのはVBSだと思います。要はそのまんまの自動化です。
>ソフトからcsvファイルでダウンロードしたエクセルでそのままVBAを動かすことはできないでしょうか?
エクセル(アプリケーション)にVBA(モジュール)やマクロを置いてあるならできますよ。VBSと組み合わせれば、バックグラウンドで処理(エクセルアプリを起動するなども自動)も可能です。
早々のご回答ありがとうございます。
やりたいことの詳細は、
(1) 業務ソフトで「CSVファイルに保存」を指定し、所定のフォルダに所定の名前でCSVファイルを作成する。
(2) 集計処理用のVBAが仕込まれたExcelを開く
(3)CSVファイルのシート全体をコピーして(2)のエクセルシートに張り付ける。
(3) エクセルでマクロの記録で作ったVBAを実行する
(4)所定のフォルダに所定の名前で(Excelファイルを)保存する。
改良したいのは、
(1)のCSVファイルで(2)以下の作業が実行できすようにしたいのです。
No.2
- 回答日時:
こんにちは
そのCSVファイルは、ソフトから出力されているものではないのですか?
もしそうなら、作成時に何らかの加工をすることは難しいのではないでしょうか?
(そもそもCSVは単なるテキストファイルなので、マクロなど仕込めないはず)
>VBAを仕込んだ専用のエクセルシートにコピペしてマクロを使って処理しています。
その作業をVBAで行うようにすれば良いのでは?
というか、マクロそのものをコピペしなくても、マクロからそのCSVファイルを処理するようにしておけば良いだけの話と思います。
あるいは、パーソナルマクロブックに当該マクロを登録しておけば、CSVファイルをエクセルで開いた時点でそのまま実行することが可能です。
ショートカットキーを登録するなどしておけば、そのキーを押すだけで良いはず。
早々のご回答ありがとうございます。
恐らく当方の屋いR太鼓とは下記のご提案の通りだと思います。
>パーソナルマクロブックに当該マクロを登録しておけば、CSVファイルをエクセルで開いた時点でそのまま実行することが可能です。
>パーソナルマクロブックに当該マクロを登録・・・
の具体的な手順をご教示いただければありがたいのですが。。。
>ショートカットキーを登録するなどしておけば、そのキーを押すだけで良いはず。→ここまで希望通りです。
一応処理前を確認して処理を開始したいので。
No.1
- 回答日時:
まずは上流の業務ソフトを含む操作手順を明確にすることでしょう。
例えば・・・
(1) 業務ソフトで「CSVファイルに保存」を指定し、所定のフォルダに所定の名前でCSVファイルを作成する。
(2) 集計処理(?)用のExcelテンプレートファイルを開く
※ 開かれると自動的にマクロが起動され、所定のフォルダにある所定の名前のCSVファイルを読み込んで処理が実行される
(3) テンプレートファイルが開かれたら集計処理(?)が終了しているので「名前を付けて保存」を選択し、所定のフォルダに所定の名前で(Excelファイルを)保存する。
なお、テンプレートファイルというのは当方の勝手な想像です。普通のExcelファイルでもよいでしょう。その場合、※部分は自動的に動作するのではなく、あるシート上に設けたボタンをクリックするのでもよいでしょう。
とにかく具体的な操作手順・・・作業の流れを明文化することだと思います。
参考まで。
早々のご回答ありがとうございます。
今の作業は、ほぼご推察の通りです。
(1) 業務ソフトで「CSVファイルに保存」を指定し、所定のフォルダに所定の名前でCSVファイルを作成する。
(2) 集計処理用のVBAが仕込まれたExcelを開く
(3)CSVファイルのシート全体をコピーして(2)のエクセルシートに張り付ける。
(3) エクセルでマクロの記録で作ったVBAを実行する
(4)所定のフォルダに所定の名前で(Excelファイルを)保存する。
で改良したいのは、
(1)のCSVファイルで(2)以下の作業が実行できすようにしたいのです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) CSVファイルでVBAを動かす方法 3 2023/04/04 10:22
- Access(アクセス) CSVファイルの「0落ち」にVBA 6 2023/02/02 15:27
- Visual Basic(VBA) VBA初心者です。電話番号の数字の前に0を表示させたいです。 2 2022/12/14 03:58
- Excel(エクセル) 【マクロ】webアドレスにて指定されたCSVファイル【excelソフト表示】を印刷する件 1 2023/02/15 01:52
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- Excel(エクセル) CSVファイルがカンマ区切りにならない。対処法を教えていただきたいです。 仕事でSMS一斉送信ができ 2 2022/07/01 21:24
- Visual Basic(VBA) エクセルVBA 4 2022/05/14 00:51
- Visual Basic(VBA) VBAで出力したCSVファイルの先頭にカンマを挿入したい 5 2022/10/14 12:20
- Visual Basic(VBA) エクセルVBA コードが同じでもファイルによって処理速度が大きく変わるのはなぜ 5 2022/11/06 21:34
- Visual Basic(VBA) VBAコードを張り付け後のエクセルの進め方 2 2023/02/07 18:24
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ファイルのアクセス回数について
-
エクセルのプロパティーでセキ...
-
Wordで差込印刷した後に別々の...
-
ExcelブックをGoogleスプレッド...
-
Excel csv保存 列数が異なる場...
-
EXCEL 検索時の設定
-
複数のexcelのファイルを一括で...
-
大量のCSVファイルをExcel形式...
-
実行時エラー52
-
エクセル UserForm 呼び出しで...
-
サブフォルダから部分一致のエ...
-
エクセルファイル名に更新日時...
-
エクセルで、フィルタかけたま...
-
エクセルでcsvファイルを開いて...
-
エクセルVBAに詳しい方! マクロ...
-
エクセルのマクロの記録でcs...
-
処理速度にムラがあり過ぎる
-
vbaでボタンをクリックして上書...
-
Xlms とはなんでしょうか?
-
VBAでマクロを使って、マクロ無...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ファイルのアクセス回数について
-
エクセルのプロパティーでセキ...
-
Wordで差込印刷した後に別々の...
-
ExcelブックをGoogleスプレッド...
-
Excel csv保存 列数が異なる場...
-
エクセル UserForm 呼び出しで...
-
エクセルファイル名に更新日時...
-
サブフォルダから部分一致のエ...
-
マクロ実行後、表示がおかしくなる
-
EXCEL 検索時の設定
-
PowerPoint 2002でファイル名を...
-
実行時エラー52
-
エクセルのマクロで行と列の削...
-
複数のexcelのファイルを一括で...
-
エクセルでcsvファイルを開いて...
-
VBAでマクロを使って、マクロ無...
-
For~Nextルーチンで最初の1回...
-
大量のCSVファイルをExcel形式...
-
vbaでボタンをクリックして上書...
-
エクセルの保存履歴を残す方法
おすすめ情報