1 名前:デフォルトの名無しさん mailto:sage [2019/12/02(月) 23:43:54.18 ID:ngrqyTy20.net] !extend:checked:vvvvv:1000:512 ExcelのVBAに関する質問スレです コード書き込みや作成依頼もOK ※前スレ Excel VBA 質問スレ Part63 https://mevius.5ch.net/test/read.cgi/tech/1568630099/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
152 名前:デフォルトの名無しさん mailto:sage [2019/12/17(火) 15:37:53.37 ID:/A3hSSic0.net] >>150 よく分からん。 ファイルをコピーしてそのファイルをそのまま使えば良いんじゃね? 要はさ、そのマクロのコ―ドがExcelの何を使っているかで変わるだろ。 コードを追って必要なものをコピーすれば使えるだろうよ。
153 名前:デフォルトの名無しさん mailto:sage [2019/12/17(火) 20:23:29.92 ID:3Fa5Zu3xa.net] 慣れてる人ならできるかもしれんが 初心者じゃ無理だろ、互換性ないし
154 名前:デフォルトの名無しさん mailto:sage [2019/12/17(火) 20:37:54.29 ID:WWM9H/Hw0.net] OOoのVBAは相当単純なものじゃないと動かなかったような 色々省略するのもダメだったような気がする
155 名前:デフォルトの名無しさん mailto:sage [2019/12/17(火) 20:55:11.10 ID:BpmC86c/0.net] OOOBasicなんてあるんだな 勉強する人いるの?
156 名前:デフォルトの名無しさん mailto:sage [2019/12/17(火) 21:06:28.96 ID:WWM9H/Hw0.net] OOOBasicというのか・・・ 数年前きまぐれにちょっと触って、あまりの互換性のなさに逃げ出したわ
157 名前:デフォルトの名無しさん (ワッチョイ 1b8e-RPlZ) [2019/12/17(火) 23:47:48 ID:eRzCNyCK0.net] >>150 馬鹿は死ね
158 名前:デフォルトの名無しさん [2019/12/18(水) 02:07:35.42 ID:ksLRDXXy0.net] なんでBasicにしたんだろね。 後発なんだから選べたはずなのに。
159 名前:デフォルトの名無しさん mailto:sage [2019/12/18(水) 02:16:13.86 ID:mwLPhsOw0.net] Cに似せるほうが大変だろう
160 名前:デフォルトの名無しさん mailto:sage [2019/12/18(水) 07:45:18.46 ID:enbCu13E0.net] >>158 VBが売れたから、機能はほぼそのままにVBAとしてofficeに搭載した VCの登場はもっと後 時系列的に仕方ないとは思う 俺もCの方が良いとは思う
161 名前:デフォルトの名無しさん mailto:sage [2019/12/18(水) 07:46:31.18 ID:5n7ujQMK0.net] oooの話だろ
162 名前:デフォルトの名無しさん mailto:sage [2019/12/18(水) 08:15:59.63 ID:Bw/0QRZma.net] >>152 PC1のデータをPC2に移したい。でも、PC2にUSBなど外部のものを差し込めないしネットには繋がるけど仮想?か分からないけどデータをPC2のデスクトップとかドキュメントに保存できないので、 データの中身をコピーしてPC2でExcelを開きペーストすれば良いのではと考えたのですが、 Excelのデータを丸々コピーするにはまずシートをコピペしてその後マクロコードをコピペすれば良いのでしょうか?どこに貼り付ければ良いのかわかりません。
163 名前:デフォルトの名無しさん mailto:sage [2019/12/18(水) 14:12:35.99 ID:HS0oeyOA0.net] PC2のどこに移したいの? PC2でデータを開き データの中身をコピーして Excel(新規ブック)を開きペーストすれば良い でもその新規ブックは保存できないんでしょ?
164 名前:デフォルトの名無しさん mailto:sage [2019/12/18(水) 14:53:42.73 ID:mwLPhsOw0.net] 会社のPCなら上司にまず先に相談しろ
165 名前:デフォルトの名無しさん mailto:sage [2019/12/18(水) 15:30:08.92 ID:Bw/0QRZma.net] >>163 PC2のデスクトップ Excelを新規で開けば保存できる。 もしくは開きたいExcelのデータCalcでなら開ける。 Calcで開いてコピーしたものをExcelに貼り付けたら出来るのか?セル全範囲コピーして貼り付けてマクロコードもコピーして。
166 名前:デフォルトの名無しさん [2019/12/18(水) 16:28:12.29 ID:cW21FM1r0.net] >>162 馬鹿は死ね
167 名前:デフォルトの名無しさん mailto:sage [2019/12/18(水) 18:12:16.35 ID:2hbVJNuaa.net] シートの書式がコピーできるかな?
168 名前:デフォルトの名無しさん mailto:sage [2019/12/18(水) 18:12:36.66 ID:2hbVJNuaa.net] セルね
169 名前:デフォルトの名無しさん [2019/12/18(水) 18:28:12.80 ID:jQts0Cg90.net] >>167 死ね
170 名前:デフォルトの名無しさん mailto:sage [2019/12/18(水) 20:40:24.52 ID:eYqAoNFQM.net] Officeクリップボードをクリアするにはどうしたらよいですか?
171 名前:デフォルトの名無しさん mailto:sage [2019/12/18(水) 21:42:34.31 ID:enbCu13E0.net] >>161 ちゅまん
172 名前:デフォルトの名無しさん mailto:sage [2019/12/18(水) 22:44:40.50 ID:ycaRvEPMx.net] >>171 かわいい
173 名前:デフォルトの名無しさん mailto:sage [2019/12/18(水) 23:33:23.01 ID:kDyrT7eN0.net] >>170 その文言でぐぐれ
174 名前:デフォルトの名無しさん mailto:sage [2019/12/19(木) 17:59:43.75 ID:OOaAV86L0.net] ちょっと教えて下さい 自動的に新しいcsvファイルが保存されてくるフォルダがあって 新しいファイルが保存されたら処理をするってコードを作りたいんですが どんな感じにしたらよいのかアイデアが浮かびません イメージは処理開始としてから処理停止とするまでずっと監視と処理をし続ける感じです 正攻法ってどんな感じでしょう?
175 名前:デフォルトの名無しさん mailto:sage [2019/12/19(木) 18:07:29.48 ID:FlPgbXc+r.net] 定期的にフォルダの更新日時かファイル数を比較
176 名前:デフォルトの名無しさん mailto:sage [2019/12/19(木) 19:15:47.42 ID:PZllcG7iF.net] C#に乗り換えてFileSystemWatcherかな そういうのはサービスにして常時起動したいだろ?どのみちVBAじゃ無理がある
177 名前:デフォルトの名無しさん mailto:sage [2019/12/19(木) 20:13:02.64 ID:r3z4nZn+0.net] >>174 csvデータは一般機能のpower queryで「フォルダ指定」で取得してから、何らかの加工をする必要があればVBAでやるというのはどうでしょう?
178 名前:デフォルトの名無しさん mailto:sage [2019/12/19(木) 20:52:54.37 ID:Uvgz+C1W0.net] >>174 Application.OnTimeでググればいろいろ出てくる Excel/VBA: 特定のフォルダ内のファイルの更新状況を監視するマクロ pineplanter.moo.jp/non-it-salaryman/2016/12/30/excel-vba-folder-monitor/
179 名前:174 [2019/12/19(木) 21:50:34.66 ID:OOaAV86L0.net] コメントありがとうございます。 C#は知識がなくて・・・。1か月後に必要なんですが今からいけるかな。。。 >>177 すこし理解に時間がかかっています。内容確認してみます。 >>178 参考例ありがとうございます。 更新したファイルだけ処理をしたいのですが、この例だと毎回全ファイルを読むみたいなので 例えば処理したファイル名はシートに記録しておいて 更新起動時に毎回処理したかしてないか判断するのも追加するって感じですかね。
180 名前:デフォルトの名無しさん mailto:sage [2019/12/19(木) 22:24:23.56 ID:O8pz/cv40.net] >>179 悪用すると色々できそうだな
181 名前:デフォルトの名無しさん (ワッチョイ 9f2c-1ZZR) mailto:sage [2019/12/20(金) 10:20:51 ID:A+TGdcd90.net] ファイルのタイムスタンプで判断すれば?
182 名前:デフォルトの名無しさん (ワッチョイ 9f2c-1ZZR) mailto:sage [2019/12/20(金) 11:57:58 ID:A+TGdcd90.net] Ruby で、ファイルの最終更新時刻を取得する fs = File::Stat.new( "./a.txt" ) p fs.mtime #=> 2018-01-16 13:36:40 +0900 最終更新時刻 p current = Time.now #=> 2019-12-20 11:54:02 +0900 p current - fs.mtime, fs.mtime - current #=> 60733042.351125, -60733042.351125
183 名前:デフォルトの名無しさん mailto:sage [2019/12/20(金) 15:07:41.92 ID:INeYifjy0.net] >>179 ファイルのアーカイヴ属性を変更すればいいよ。これなら新規以外にも、変更ファイルも拾えるはず。
184 名前:デフォルトの名無しさん [2019/12/20(金) 15:08:25.80 ID:CBAVBsMi0.net] 馬鹿ばっか
185 名前:デフォルトの名無しさん [2019/12/20(金) 15:24:50.75 ID:CkbICV7EM.net] ハゲばっか
186 名前:デフォルトの名無しさん mailto:sage [2019/12/20(金) 20:34:34.24 ID:UWWbjOVR0.net] 馴鹿ばっか
187 名前:デフォルトの名無しさん mailto:sage [2019/12/21(土) 11:10:49.09 ID:lLQbKr+9r.net] クリスマスだから
188 名前:デフォルトの名無しさん mailto:sage [2019/12/21(土) 19:08:13.95 ID:reWWVMAr0.net] セルに指定したフォントの情報などを変数(オブジェクト?)として 保持して、別のセルに貼り付けることはできないでしょうか Public Sub textMacro() ActiveSheet.Cells(1, 1).Select ActiveCell.Value = "testTESTtest" ActiveCell.Characters(Start:=5, Length:=4).Font.ColorIndex = 3 End Sub こんな感じで、文字列の途中で色を変えたりフォントを変えたり した情報を構造体配列として保持しておいて、ソートしたり 特定条件で抽出したりしたデータを、書式ごと別のセルに 貼り付けたいのです 上記のようなコードで一旦別のワークシートに書き込んでやって、 そこを参照してコピーすれば解決します ですが作業用ワークシートを作るのが美しくないので、なにか 方法がないものかと悩んでいます
189 名前:デフォルトの名無しさん mailto:sage [2019/12/21(土) 19:30:42.69 ID:EDn7hR2k0.net] >>188 rangeにでも入れとけばいいんじゃないの
190 名前:デフォルトの名無しさん mailto:sage [2019/12/21(土) 19:57:20.88 ID:reWWVMAr0.net] >>189 言葉足らずだったかもしれません 188で書いたコードのように、一旦どこかのセルに書式を設定するのではなく、 書式設定済みのデータを内部で生成したあとでセルに貼りたいのです
191 名前:デフォルトの名無しさん mailto:sage [2019/12/21(土) 20:19:43.43 ID:Z2fXXpuT0.net] アドバンスフィルタ使うとか。
192 名前:デフォルトの名無しさん mailto:sage [2019/12/21(土) 21:42:26.79 ID:u7lOGHHR0.net] >>188 activecellは rangeオブジェクト rangeオブジェクトは必ずどこかの実態セルに紐付けしないと設定、参照できない なので、実態セルを使いたくなければ、仮想的に実装するしかない 全てを網羅するには、それは非現実的(ムダ)だから私ならやらない あとの判断はお任せする (may be. GL)
193 名前:デフォルトの名無しさん mailto:sage [2019/12/21(土) 21:50:56.66 ID:vmSiEfoS0.net] ここには北海道のグラサンのスーパーハゲザーこないのー?
194 名前:デフォルトの名無しさん mailto:sage [2019/12/21(土) 22:03:15.47 ID:xOT/WAE8x.net] >>190 セルのコピーで済む処理をわざわざスクラッチする意味があるのか? マクロ言語で車輪の再発明をするのは無駄だし結果的に美しくないものが出来上がって終わりなことが多いぞ まぁ文字列書式の取得をするならRange.Charactersクラスを対象にForで一文字ずつループを回して、Fontプロパティで取れる各フォント属性を調べて構造体配列に格納していけば良い Characters(i, 1)とか指定すれば一文字ずつ調べられる 具体的にはFontクラスのうち Bold, ColorまたはColorIndex, FontStyle, Italic, Name, Size, ThemeColor, ThemeFont, Underlineあたりを取得しとけば何とかなるんじゃないか
195 名前:デフォルトの名無しさん mailto:sage [2019/12/21(土) 22:26:10.14 ID:reWWVMAr0.net] >>192 >>194 内部データとして、特定の文字だけボールドにしたり赤字にしたりしたデータを 保持しておいて、それをそのままセルに貼れないだろうかという趣旨でした 全然実用性のない例ですが、何らかの名簿データを元データとして入力すると して、「佐藤」という名字だけを赤で表示したい、というケースがあったとします。 このとき、表示するときに年齢別だったり性別だったりの条件で抽出したりする 際に、毎回セルにデータを書き込むときにフォントの設定をする必要があるのか、 一度設定済みのデータを貼れば済むような方法があるのか、という質問でした 現在は毎回貼るたびにフォントの設定をしているので、もっと効率的な方法が あるのではないかと考えた次第 でも残念ながら、どうやらなさそうですね 確かにセルをコピーすれば済む話なので、断念します
196 名前:デフォルトの名無しさん mailto:sage [2019/12/21(土) 23:09:32.16 ID:u7lOGHHR0.net] >>195 鈴木 健二 の鈴木だけを赤文字に設定したセルの書式コピーして 鈴木 太郎 セルに貼り付けしても、鈴木だけを赤にはできなかった (バージョンによって違うかもだが) ロジックでやるしかないんじゃないかな 鈴木or宇都宮を赤にするとか
197 名前:デフォルトの名無しさん mailto:sage [2019/12/21(土) 23:41:09.25 ID:reWWVMAr0.net] >>196 色々ありがとうございます 今回やりたいのは、鈴木だけを赤くした「鈴木 健二」というセルを作るのに、 事前にデータを作ってからセルに貼り付けたいということですから、 「鈴木 太郎」の「鈴木」が赤くならなくても特に問題ありません この例で言うなら、コピペ以外の方法で、同じく鈴木だけが赤くなった鈴木健二の セルを効率よく作りたい、ということですね
198 名前:デフォルトの名無しさん mailto:sage [2019/12/22(日) 00:19:45.02 ID:4IcKy9Blx.net] >>197 構造体とかでパラメータ設定すればやれないことはない 書式設定対象の文字列の開始オフセット位置と文字列長、フォント属性の設定値からなる構造体配列を作って、一括でRangeオブジェクトのプロパティに代入すれば良い ただしパラメータを動的に指定する処理やらUIやらを構築する手間とか考えたら結局セルコピーでよくねってなる
199 名前:デフォルトの名無しさん mailto:sage [2019/12/22(日) 09:13:02.87 ID:m/MVfWr2M.net] office2010から2016へ変えたらマクロの遅さが気になって セルコピーを別の方法でやれないか考えてる
200 名前:デフォルトの名無しさん mailto:sage [2019/12/22(日) 10:54:11.14 ID:sgFeqmUl0.net] マクロが遅いんじゃなくてPCのスペックが貧弱過ぎるんじゃないか
201 名前:デフォルトの名無しさん mailto:sage [2019/12/22(日) 11:54:58.14 ID:M+v9sXGU0.net] >>198 そこまでする価値はないですね 自分が知らないだけで、なにか簡単な方法があるのではないかと思って いたのですが、そもそも需要がない動作なんでしょうね
202 名前:デフォルトの名無しさん mailto:sage [2019/12/22(日) 12:26:41.63 ID:cYIprE7S0.net] >>199 変えたのはExcelだけか? 実はOSを10に変えた時にExcelも入れ替えたのではなく?
203 名前:デフォルトの名無しさん mailto:sage [2019/12/22(日) 14:42:00.45 ID:qo1j1gBdx.net] >>201 そこまでやるならmhtか何かでコード生成してからxls変換してレンダリングする方がいいよねって話になってしまうからな
204 名前:デフォルトの名無しさん mailto:sage [2019/12/27(金) 23:18:51.19 ID:89CBNjra0.net] んあ
205 名前:デフォルトの名無しさん mailto:sage [2019/12/27(金) 23:55:11.89 ID:kLvnMS830.net] 北海道のグラサンスーパーハゲザーはここにはこないのー?
206 名前:デフォルトの名無しさん mailto:sage [2019/12/28(土) 10:04:17.04 ID:Ht/sR5FE0.net] 北海道にいるんだろ
207 名前:デフォルトの名無しさん mailto:sage [2019/12/28(土) 11:09:10.42 ID:iMlStgtR0.net] あなたのハゲにサクセスしたい
208 名前:デフォルトの名無しさん mailto:sage [2019/12/28(土) 17:00:07.97 ID:SHykekh8a.net] 休みに入って大人しくなったな
209 名前:デフォルトの名無しさん mailto:sage [2020/01/01(水) 22:49:57.07 ID:/3koq0Lq0.net] フォルダ名を取得し名前を変える処理をしたいのですが、フォルダ名の頭に0がついているとセルに取り込んだ際、数値扱いされきえてしまいます。何かいい方法ないでしょうか? ほぼネットから引用したものですが。。 Sub folder() Dim folderPath As String folderPath = Sheets(2).[B1] Dim fso As Object Set fso = CreateObject("Scripting.FileSystemObject") Dim n As Variant n = fso.GetFolder(folderPath).SubFolders.Count If (0 < n) Then Dim I As Long I = 1 Dim f As Object For Each f In fso.GetFolder(folderPath).SubFolders Cells(3 + I,1).Value=Str(f.Name) I = I + 1 Next f End If End Sub
210 名前:デフォルトの名無しさん mailto:sage [2020/01/01(水) 22:54:36.69 ID:Oh0xulqx0.net] >>209 ・セルの書式を予め文字列にしておく ・ Cells(3 + I,1).Value = "'" & Str(f.Name) ・セルに取り込まずに処理する どれか
211 名前:デフォルトの名無しさん mailto:sage [2020/01/01(水) 23:43:11.75 ID:/3koq0Lq0.net] >>210 頭に「'」つける案いただきます! すっかり頭からぬけておりました。 ありがとうございます!
212 名前:デフォルトの名無しさん mailto:sage [2020/01/02(木) 00:01:52.13 ID:KGMPhTA00.net] >>209 頭に'付けるとかセルの表示形式を文字にするとか それVBAじゃなくてExcelの範疇では
213 名前:デフォルトの名無しさん mailto:sage [2020/01/02(木) 00:13:18.61 ID:4cnj/64c0.net] VBAはそもそもビジュアルベーシックフォーアプリケーション エクセル(他office製品)のための言語 Excelの範疇も何もないよ
214 名前:デフォルトの名無しさん mailto:sage [2020/01/02(木) 00:44:32.37 ID:C9nM6Ix2x.net] セルにフォルダ名を入れなきゃならない理由が全く分からない
215 名前:デフォルトの名無しさん mailto:sage [2020/01/02(木) 00:52:53.68 ID:m04meMbs0.net] PowerQueryにデータの参照元渡すとか
216 名前:デフォルトの名無しさん [2020/01/02(木) 11:28:52.88 ID:yN8yk3jo0.net] マクロでCSV書き出ししたデータですが どうも1行ごとに最後のセルの末尾に勝手に改行コードが入っているようです これはなんとかならないでしょうか その改行コードもCRLFで言うところのCRだけのようで、見かけ上全くわかりません aaa,ddd,ccc とあったら、cccの末尾に見えないCFが張り付いている感じです urlエンコードで見ると ccc%0D みたいな感じです どうしたら綺麗に書き出せますか?
217 名前:デフォルトの名無しさん mailto:sage [2020/01/02(木) 12:02:15.68 ID:33UW29zWd.net] >>216 改行コードをなくした場合、行の区切りはどうするの? 完全に思い通りにしたい時はテキストファイルの生成を自力でやるしかない
218 名前:デフォルトの名無しさん mailto:sage [2020/01/02(木) 12:48:11.80 ID:/IgTqK/90.net] セル内で改行しても平気か確認した方がいい
219 名前:デフォルトの名無しさん mailto:sage [2020/01/02(木) 12:53:49.13 ID:KGMPhTA00.net] >>216 ExcelではLFがセル内改行、CRLFが次の行 CRは意味を持たないので入ってても改行されない 消したければ普通にその文字を消せばいい
220 名前:デフォルトの名無しさん mailto:sage [2020/01/02(木) 12:58:08.65 ID:KGMPhTA00.net] あと勝手に入ってるのではなく元々のテキストファイルに入ってるんだろう
221 名前:デフォルトの名無しさん [2020/01/02(木) 15:17:06.96 ID:yN8yk3jo0.net] 216です >>217 csvの中のデータとして配列に入っています。書き出したcsvは普通に数行のカンマ区切りです。 それをjavascriptで配列へ取り込みしたときに、 二次元配列データの一行の最後のデータの末尾に毎行追加されている感じです。 配列内 aaa,ddd,ccc%0D aaa,ddd,ccc%0D aaa,ddd,ccc%0D csvとしての改行・配列構成は崩れていません。 ちなみに書き出しは ActiveWorkbook.SaveAs Filename:=csvName, FileFormat:=xlCSV です。win7時代に作ったマクロをwin10で使っていますが、それもあるんでしょうか… >>219 EXCELの改行仕様は知りませんでした。ありがとうございます。 末尾に列を1つ増やしたら取りたいデータにはつかなくなったので (おそらく、増やした列に%0Dが移動したのかとw)、 若干気持ち悪いですが、趣味プログラムなので運用で対応します。 みなさんありがとうございました。
222 名前:デフォルトの名無しさん mailto:sage [2020/01/02(木) 16:37:15.04 ID:yYKIO5swM.net] 北海道のグラサンスーパーハゲザーはここにはこないのー?
223 名前:デフォルトの名無しさん mailto:sage [2020/01/02(木) 17:52:03.38 ID:YgEQc8yF0.net] >>216 Excelのsheetに読み込んでから、CRLF等を""に置換する ではダメ?
224 名前:デフォルトの名無しさん mailto:sage [2020/01/02(木) 21:25:07.68 ID:ShHqIFTQ0.net] 一般論として例えば、Ruby のCSV の規格にも、 行区切り文字・列区切り文字・クォート文字などがある 特に設定しないデフォルトでは、それらは、 改行コード・カンマ・ダブルクォーテーションになる もし、それらが無ければ、CSVの要件を満たさないw つまり、CSVの規格ではありませんw
225 名前:デフォルトの名無しさん mailto:sage [2020/01/02(木) 23:23:58.57 ID:1vLrUBFwa.net] ルビカスが何を言おうと、世の中ではExcelが出力するCSVが標準のCSVだ
226 名前:デフォルトの名無しさん mailto:sage [2020/01/03(金) 10:32:03.45 ID:R/lajPDg0.net] CSVは自前でテキストファイル読み込み+自前で区切り扱いが基本。 区切りが何であろうと、データの形式が何であろうと全て自分でコントロール出来るし速度も速い。
227 名前:デフォルトの名無しさん mailto:sage [2020/01/03(金) 12:29:48.12 ID:V2sewd5k0.net] 同意。てか、Excel標準のCSV読み込み仕様もうちょっとなんとかなりませんかね・・・? それはさておき>>216 &>>221 (もう見てないかもだけど) その「CSVファイルを配列に取り込むJavaScript」のコードに問題があるんじゃないかなと。 具体的には\n(%0A)でSplitしてるから\rが残ってるだけだと思うけどな。
228 名前:デフォルトの名無しさん mailto:sage [2020/01/03(金) 18:33:14.85 ID:LoHkYQxe0.net] 使い続ける以上CSVとの戦いは続くのだ
229 名前:デフォルトの名無しさん mailto:sage [2020/01/03(金) 18:50:10.73 ID:k7eftYc7x.net] モダンExcelが一般化してきた今ならクエリでCSVの開き方を指定して読み込むのがいいんじゃないの CSVをエクセルで直接開くといろいろ勝手なことをしてくれるので
230 名前:デフォルトの名無しさん mailto:sage [2020/01/03(金) 19:06:41.78 ID:esau8hBed.net] PowerQueryのコードを書くのはVBA以上にハードルが高いぞ
231 名前:デフォルトの名無しさん mailto:sage [2020/01/03(金) 19:55:22.39 ID:3Uhjf7eSM.net] PowerQueryコード書かなきゃいけないの? GUIでできる範囲だと不十分なの?
232 名前:デフォルトの名無しさん mailto:sage [2020/01/03(金) 19:58:54.81 ID:k7eftYc7x.net] そんなにハードル高いか? テキストファイルの読み込みの処理をスクラッチするより明らかに楽だし処理速度も速いと思うが 例えば4列のCSVをSJIS(Windows-J31)でデコードしてカンマ区切りで読み込んでSheet1のA1セルから書き出すとしたらこんな感じ Sub ReadCSV() With Worksheets("Sheet1") With .QueryTables.Add(Connection:="TEXT;ソースファイルのパス", Destination:=.Range("A1")) .TextFilePlatform = 932 .TextFileCommaDelimiter = True .RefreshStyle = xlOverwriteCells .TextFileColumnDataTypes = Array(xlTextFormat, xlTextFormat, xlTextFormat, xlTextFormat) .Refresh .Delete End With End With End Sub
233 名前:デフォルトの名無しさん mailto:sage [2020/01/03(金) 20:07:37.72 ID:k7eftYc7x.net] PowerQueryだったらもっと簡単だろう Csv.Documentにソースのパスとメタ情報を渡してテーブルを取得するだけだしGUIでステップ記録できる
234 名前:デフォルトの名無しさん mailto:sage [2020/01/03(金) 20:56:20.20 ID:LoHkYQxe0.net] CSV読み込みの話してんのになんで書き込みの回答してんだろうこの子
235 名前:デフォルトの名無しさん mailto:sage [2020/01/03(金) 21:32:33.80 ID:k7eftYc7x.net] >>234 >>232 のコードについて言ってるなら、読み込んでシートに書き出してるわけで、クエリの使い方としてはオーソドックス処理だぞ 読み込んだ結果をシートに書き出さないならODCにデータモデルとして保存すれば良い
236 名前:デフォルトの名無しさん mailto:sage [2020/01/03(金) 22:10:30.43 ID:k7eftYc7x.net] >>235 ODCにデータモデルとして→× データモデルとして→○
237 名前:デフォルトの名無しさん mailto:sage [2020/01/03(金) 22:23:49.87 ID:X7hap7HH0.net] >>230 全然。 基本的にはリボンの機能使った操作が1つずつのステップになっていく。 ステップの1つ1つがマクロみたいなもの。 「詳細クエリー」を見て初めて「コードはこうなってるんだ・・・」 という感じ。 もっとも、M Functionのレファレンスやパラメータあたり説明が 英語でもまだ不親切なので、 使えてない部分が多分にはあるけど。 ただ、VBAのように出来る範囲が広範囲なわけではなく、 取得したデータの成形に特化してる。 スクレイピングについては Pythonみたいに取得対象のWeb画面で IDやパスワード入力するとか、 ボタンを押すみたいなことも出来ない模様。
238 名前:デフォルトの名無しさん mailto:sage [2020/01/03(金) 22:43:05.12 ID:3zmXV6NNx.net] データの成形に特化と言ってもVBAでスクラッチすると恐ろしく面倒なJoinとかのSQLチックな処理は全て実行できるので、データ処理の面ではVBAより手軽で便利 あとAccessDBやSQL ServerやOBDCはもちろん、ファイルシステムとかExchangeサーバとかSharePointリストとか、およそデータベースとして扱えるデータストアの情報は全て取得できる フォルダ内のファイルの属性情報を取得する処理のためだけにいちいちFileSystemObjectのインスタンスとかを使ってスクラッチする必要がなくなると考えればめちゃくちゃ便利
239 名前:デフォルトの名無しさん [2020/01/04(土) 15:59:54.32 ID:dDunGyfu0.net] >>227 みています ご指摘の通り、\nでspritかけてました! \nってCR+LFじゃなかったんですね… この後都合があるのですぐには試せませんが、 その辺確認してみます。 ありがとうございます!
240 名前:デフォルトの名無しさん mailto:sage [2020/01/04(土) 16:12:12.74 ID:8fEwlZFG0.net] \nはLFじゃなかったか windowsの改行は\r\nだったような
241 名前:デフォルトの名無しさん mailto:sage [2020/01/04(土) 17:52:00.86 ID:ALZ03HNg0.net] EditBoxでは\r\nでRichEditBoxでは\nだねWindows
242 名前:デフォルトの名無しさん mailto:sage [2020/01/04(土) 17:56:48.54 ID:+4weKQQc0.net] CR+LFの定数の vbCrLf か vbNewLine でいいんじゃね
243 名前:デフォルトの名無しさん mailto:sage [2020/01/04(土) 18:04:55.94 ID:8fEwlZFG0.net] vbNewLineいいよね
244 名前:デフォルトの名無しさん mailto:sage [2020/01/04(土) 18:23:56.78 ID:ZrFrOERU0.net] >>239 やっぱり。 >>240-241 の人もいうとおり、OSだけじゃなくAPI関数ごとに改行コードの取扱いが違ったりすることもあるし、 テキストエディタに内蔵されてる正規表現なんかでも「\n」でCRLFに対応させてる例もあったりするから、 その辺はトライ&エラーで覚えていくといいとおもうよ。
245 名前:デフォルトの名無しさん mailto:sage [2020/01/04(土) 18:40:58.78 ID:HwWXKum00.net] 北海道のグラサンスーパーハゲザーはここにはこないのー?