コマンド実行とVBAで同じ結果を得たい
お知恵を拝借させてください。
コマンドプロンプトで期待通りの結果が得られるコマンドです。
pushd C:\Users\myname\Desktop\a & type *.csv > YYYYMMDDhhnnss_マージ.txt
「コマンド実行」で同じ結果を得るには、どう修正したら良いでしょうか?
Excelからの制御で途中までしかリストアップされない原因の特定と対策に繋げたいです。
環境
- Win10
- WinActor7.2.1
- Excel2013 or 365(2021相当)
▼ コマンドプロンプト
- pushd C:\Users\myname\Desktop\a & type *.csv > YYYYMMDDhhnnss_マージ.txt
→ 正しくリストアップされる
▼ WinActor
- ① コマンド実行
値⇒cmd /c
値⇒pushd C:\Users\myname\Desktop\a & type *.csv > YYYYMMDDhhnnss_マージ.txt
→ コマンドの起動に失敗しました
&とかスペースの考慮が必要っぽい
ダブルクォーテーション?
エスケープ?
文字コードに差し替え?実体参照とか?
URLエンコード(パーセントエンコード)?
- ② WinActorノート > シェルツール
コマンドプロンプトを開く
コマンドを実行する(PowerShell,コマンドプロンプト)
値⇒ppushd C:\Users\myname\Desktop\a & type *.csv > YYYYMMDDhhnnss_マージ.txt
→ 正しくリストアップされる
▼ Excel VBA
Office TANAKA - Excel VBA Tips[MS-DOSコマンドの標準出力を取得する]
http://officetanaka.net/excel/vba/tips/tips27.htm
- → 解説通りの結果が得られる
- コマンドにこれをブチ込むと、、
pushd C:\Users\myname\Desktop\a & type *.csv > YYYYMMDDhhnnss_マージ.txt
→ 途中までしかリストアップされない
少し前までは何度繰り返しても281KB、5134行まで
現在は何度繰り返しても275KB、5031行まである
実際は5565KB、98577行ある
待ちきれてないのか
背景
週1のログファイル取得/結合から分析結果のグラフ更新までを自動化してます。
しくみは作成済みで、運用は回ってて、周辺の使い勝手を向上させるフェーズです。
ログファイルの結合は現在はコマンドプロンプトで手作業という、残念な状況です。
主なノウハウを見渡して、わたしの課題に当てはめようとすると、WinActorを経由するのは冗長/贅沢な領域です。
結合のコマンド実行(10秒)、ファイルインポート(10秒)、マクロボタンのクリックのみで、後はひたすら待つのみです。
WinActorに収めることも可能な処理ではあります。
マクロボタンのクリックまでのピンポンダッシュ。
タイムテーブルの隙間時間でWinActorに担ってもらうことは可能ですが、その調整のほうがメンドそう、、
複数のCSV・Excelファイルを1つのCSVファイルにまとめるサンプルシナリオ
https://winactor.biz/samplescenario/2021/01/15_3590.html
[WinActor]CSVでUNIONクエリ(ファイルマージ) | わんすけに聞いてみる
https://yizm.work/winactor/winactorcsv_union_csv_file_merge/