!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
探検
Excel VBA 質問スレ Part64
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 23d0-o7DB)
2019/12/02(月) 23:43:54.18ID:ngrqyTy20170デフォルトの名無しさん (ブーイモ MM02-Cxlv)
2019/12/18(水) 20:40:24.52ID:eYqAoNFQM Officeクリップボードをクリアするにはどうしたらよいですか?
171デフォルトの名無しさん (ワッチョイ 4e68-xO71)
2019/12/18(水) 21:42:34.31ID:enbCu13E0 >>161
ちゅまん
ちゅまん
172デフォルトの名無しさん (アークセー Sxdf-kCbJ)
2019/12/18(水) 22:44:40.50ID:ycaRvEPMx >>171
かわいい
かわいい
173デフォルトの名無しさん (ワッチョイ e279-40qP)
2019/12/18(水) 23:33:23.01ID:kDyrT7eN0 >>170
その文言でぐぐれ
その文言でぐぐれ
174デフォルトの名無しさん (ワッチョイ f71f-DXsO)
2019/12/19(木) 17:59:43.75ID:OOaAV86L0 ちょっと教えて下さい
自動的に新しいcsvファイルが保存されてくるフォルダがあって
新しいファイルが保存されたら処理をするってコードを作りたいんですが
どんな感じにしたらよいのかアイデアが浮かびません
イメージは処理開始としてから処理停止とするまでずっと監視と処理をし続ける感じです
正攻法ってどんな感じでしょう?
自動的に新しいcsvファイルが保存されてくるフォルダがあって
新しいファイルが保存されたら処理をするってコードを作りたいんですが
どんな感じにしたらよいのかアイデアが浮かびません
イメージは処理開始としてから処理停止とするまでずっと監視と処理をし続ける感じです
正攻法ってどんな感じでしょう?
175デフォルトの名無しさん (オッペケ Srcb-KMkw)
2019/12/19(木) 18:07:29.48ID:FlPgbXc+r 定期的にフォルダの更新日時かファイル数を比較
176デフォルトの名無しさん (ミカカウィ FFfb-On3P)
2019/12/19(木) 19:15:47.42ID:PZllcG7iF C#に乗り換えてFileSystemWatcherかな
そういうのはサービスにして常時起動したいだろ?どのみちVBAじゃ無理がある
そういうのはサービスにして常時起動したいだろ?どのみちVBAじゃ無理がある
177デフォルトの名無しさん (ワッチョイ 5701-CZMl)
2019/12/19(木) 20:13:02.64ID:r3z4nZn+0 >>174
csvデータは一般機能のpower queryで「フォルダ指定」で取得してから、何らかの加工をする必要があればVBAでやるというのはどうでしょう?
csvデータは一般機能のpower queryで「フォルダ指定」で取得してから、何らかの加工をする必要があればVBAでやるというのはどうでしょう?
178デフォルトの名無しさん (ワッチョイ f7ca-+Tiu)
2019/12/19(木) 20:52:54.37ID:Uvgz+C1W0 >>174
Application.OnTimeでググればいろいろ出てくる
Excel/VBA: 特定のフォルダ内のファイルの更新状況を監視するマクロ
http://pineplanter.moo.jp/non-it-salaryman/2016/12/30/excel-vba-folder-monitor/
Application.OnTimeでググればいろいろ出てくる
Excel/VBA: 特定のフォルダ内のファイルの更新状況を監視するマクロ
http://pineplanter.moo.jp/non-it-salaryman/2016/12/30/excel-vba-folder-monitor/
179174 (ワッチョイ f71f-M3rQ)
2019/12/19(木) 21:50:34.66ID:OOaAV86L0180デフォルトの名無しさん (ワッチョイ b7da-6AKx)
2019/12/19(木) 22:24:23.56ID:O8pz/cv40 >>179
悪用すると色々できそうだな
悪用すると色々できそうだな
181デフォルトの名無しさん (ワッチョイ 9f2c-1ZZR)
2019/12/20(金) 10:20:51.92ID:A+TGdcd90 ファイルのタイムスタンプで判断すれば?
182デフォルトの名無しさん (ワッチョイ 9f2c-1ZZR)
2019/12/20(金) 11:57:58.87ID:A+TGdcd90 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
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デフォルトの名無しさん (ワッチョイ 9fea-mb36)
2019/12/20(金) 15:07:41.92ID:INeYifjy0 >>179
ファイルのアーカイヴ属性を変更すればいいよ。これなら新規以外にも、変更ファイルも拾えるはず。
ファイルのアーカイヴ属性を変更すればいいよ。これなら新規以外にも、変更ファイルも拾えるはず。
184デフォルトの名無しさん (ワッチョイ f78e-H4w9)
2019/12/20(金) 15:08:25.80ID:CBAVBsMi0 馬鹿ばっか
185デフォルトの名無しさん (ブーイモ MMfb-BnkS)
2019/12/20(金) 15:24:50.75ID:CkbICV7EM ハゲばっか
186デフォルトの名無しさん (ワッチョイ b7da-prDO)
2019/12/20(金) 20:34:34.24ID:UWWbjOVR0 馴鹿ばっか
187デフォルトの名無しさん (オッペケ Srcb-KMkw)
2019/12/21(土) 11:10:49.09ID:lLQbKr+9r クリスマスだから
188デフォルトの名無しさん (ワッチョイ d75f-+Tiu)
2019/12/21(土) 19:08:13.95ID:reWWVMAr0 セルに指定したフォントの情報などを変数(オブジェクト?)として
保持して、別のセルに貼り付けることはできないでしょうか
Public Sub textMacro()
ActiveSheet.Cells(1, 1).Select
ActiveCell.Value = "testTESTtest"
ActiveCell.Characters(Start:=5, Length:=4).Font.ColorIndex = 3
End Sub
こんな感じで、文字列の途中で色を変えたりフォントを変えたり
した情報を構造体配列として保持しておいて、ソートしたり
特定条件で抽出したりしたデータを、書式ごと別のセルに
貼り付けたいのです
上記のようなコードで一旦別のワークシートに書き込んでやって、
そこを参照してコピーすれば解決します
ですが作業用ワークシートを作るのが美しくないので、なにか
方法がないものかと悩んでいます
保持して、別のセルに貼り付けることはできないでしょうか
Public Sub textMacro()
ActiveSheet.Cells(1, 1).Select
ActiveCell.Value = "testTESTtest"
ActiveCell.Characters(Start:=5, Length:=4).Font.ColorIndex = 3
End Sub
こんな感じで、文字列の途中で色を変えたりフォントを変えたり
した情報を構造体配列として保持しておいて、ソートしたり
特定条件で抽出したりしたデータを、書式ごと別のセルに
貼り付けたいのです
上記のようなコードで一旦別のワークシートに書き込んでやって、
そこを参照してコピーすれば解決します
ですが作業用ワークシートを作るのが美しくないので、なにか
方法がないものかと悩んでいます
189デフォルトの名無しさん (ワッチョイ f77c-Mpc3)
2019/12/21(土) 19:30:42.69ID:EDn7hR2k0 >>188
rangeにでも入れとけばいいんじゃないの
rangeにでも入れとけばいいんじゃないの
190デフォルトの名無しさん (ワッチョイ d75f-+Tiu)
2019/12/21(土) 19:57:20.88ID:reWWVMAr0191デフォルトの名無しさん (ワッチョイ b7da-r9Jq)
2019/12/21(土) 20:19:43.43ID:Z2fXXpuT0 アドバンスフィルタ使うとか。
192デフォルトの名無しさん (ワッチョイ 5701-EwPn)
2019/12/21(土) 21:42:26.79ID:u7lOGHHR0 >>188
activecellは rangeオブジェクト
rangeオブジェクトは必ずどこかの実態セルに紐付けしないと設定、参照できない
なので、実態セルを使いたくなければ、仮想的に実装するしかない
全てを網羅するには、それは非現実的(ムダ)だから私ならやらない
あとの判断はお任せする
(may be. GL)
activecellは rangeオブジェクト
rangeオブジェクトは必ずどこかの実態セルに紐付けしないと設定、参照できない
なので、実態セルを使いたくなければ、仮想的に実装するしかない
全てを網羅するには、それは非現実的(ムダ)だから私ならやらない
あとの判断はお任せする
(may be. GL)
193デフォルトの名無しさん (ワッチョイ 5701-fd2f)
2019/12/21(土) 21:50:56.66ID:vmSiEfoS0 ここには北海道のグラサンのスーパーハゲザーこないのー?
194デフォルトの名無しさん (アークセー Sxcb-KMkw)
2019/12/21(土) 22:03:15.47ID:xOT/WAE8x >>190
セルのコピーで済む処理をわざわざスクラッチする意味があるのか?
マクロ言語で車輪の再発明をするのは無駄だし結果的に美しくないものが出来上がって終わりなことが多いぞ
まぁ文字列書式の取得をするならRange.Charactersクラスを対象にForで一文字ずつループを回して、Fontプロパティで取れる各フォント属性を調べて構造体配列に格納していけば良い
Characters(i, 1)とか指定すれば一文字ずつ調べられる
具体的にはFontクラスのうち
Bold, ColorまたはColorIndex, FontStyle, Italic, Name, Size, ThemeColor, ThemeFont, Underlineあたりを取得しとけば何とかなるんじゃないか
セルのコピーで済む処理をわざわざスクラッチする意味があるのか?
マクロ言語で車輪の再発明をするのは無駄だし結果的に美しくないものが出来上がって終わりなことが多いぞ
まぁ文字列書式の取得をするならRange.Charactersクラスを対象にForで一文字ずつループを回して、Fontプロパティで取れる各フォント属性を調べて構造体配列に格納していけば良い
Characters(i, 1)とか指定すれば一文字ずつ調べられる
具体的にはFontクラスのうち
Bold, ColorまたはColorIndex, FontStyle, Italic, Name, Size, ThemeColor, ThemeFont, Underlineあたりを取得しとけば何とかなるんじゃないか
195デフォルトの名無しさん (ワッチョイ d75f-+Tiu)
2019/12/21(土) 22:26:10.14ID:reWWVMAr0 >>192
>>194
内部データとして、特定の文字だけボールドにしたり赤字にしたりしたデータを
保持しておいて、それをそのままセルに貼れないだろうかという趣旨でした
全然実用性のない例ですが、何らかの名簿データを元データとして入力すると
して、「佐藤」という名字だけを赤で表示したい、というケースがあったとします。
このとき、表示するときに年齢別だったり性別だったりの条件で抽出したりする
際に、毎回セルにデータを書き込むときにフォントの設定をする必要があるのか、
一度設定済みのデータを貼れば済むような方法があるのか、という質問でした
現在は毎回貼るたびにフォントの設定をしているので、もっと効率的な方法が
あるのではないかと考えた次第
でも残念ながら、どうやらなさそうですね
確かにセルをコピーすれば済む話なので、断念します
>>194
内部データとして、特定の文字だけボールドにしたり赤字にしたりしたデータを
保持しておいて、それをそのままセルに貼れないだろうかという趣旨でした
全然実用性のない例ですが、何らかの名簿データを元データとして入力すると
して、「佐藤」という名字だけを赤で表示したい、というケースがあったとします。
このとき、表示するときに年齢別だったり性別だったりの条件で抽出したりする
際に、毎回セルにデータを書き込むときにフォントの設定をする必要があるのか、
一度設定済みのデータを貼れば済むような方法があるのか、という質問でした
現在は毎回貼るたびにフォントの設定をしているので、もっと効率的な方法が
あるのではないかと考えた次第
でも残念ながら、どうやらなさそうですね
確かにセルをコピーすれば済む話なので、断念します
196デフォルトの名無しさん (ワッチョイ 5701-EwPn)
2019/12/21(土) 23:09:32.16ID:u7lOGHHR0 >>195
鈴木 健二
の鈴木だけを赤文字に設定したセルの書式コピーして
鈴木 太郎
セルに貼り付けしても、鈴木だけを赤にはできなかった
(バージョンによって違うかもだが)
ロジックでやるしかないんじゃないかな
鈴木or宇都宮を赤にするとか
鈴木 健二
の鈴木だけを赤文字に設定したセルの書式コピーして
鈴木 太郎
セルに貼り付けしても、鈴木だけを赤にはできなかった
(バージョンによって違うかもだが)
ロジックでやるしかないんじゃないかな
鈴木or宇都宮を赤にするとか
197デフォルトの名無しさん (ワッチョイ d75f-+Tiu)
2019/12/21(土) 23:41:09.25ID:reWWVMAr0 >>196
色々ありがとうございます
今回やりたいのは、鈴木だけを赤くした「鈴木 健二」というセルを作るのに、
事前にデータを作ってからセルに貼り付けたいということですから、
「鈴木 太郎」の「鈴木」が赤くならなくても特に問題ありません
この例で言うなら、コピペ以外の方法で、同じく鈴木だけが赤くなった鈴木健二の
セルを効率よく作りたい、ということですね
色々ありがとうございます
今回やりたいのは、鈴木だけを赤くした「鈴木 健二」というセルを作るのに、
事前にデータを作ってからセルに貼り付けたいということですから、
「鈴木 太郎」の「鈴木」が赤くならなくても特に問題ありません
この例で言うなら、コピペ以外の方法で、同じく鈴木だけが赤くなった鈴木健二の
セルを効率よく作りたい、ということですね
198デフォルトの名無しさん (アークセー Sxcb-KMkw)
2019/12/22(日) 00:19:45.02ID:4IcKy9Blx >>197
構造体とかでパラメータ設定すればやれないことはない
書式設定対象の文字列の開始オフセット位置と文字列長、フォント属性の設定値からなる構造体配列を作って、一括でRangeオブジェクトのプロパティに代入すれば良い
ただしパラメータを動的に指定する処理やらUIやらを構築する手間とか考えたら結局セルコピーでよくねってなる
構造体とかでパラメータ設定すればやれないことはない
書式設定対象の文字列の開始オフセット位置と文字列長、フォント属性の設定値からなる構造体配列を作って、一括でRangeオブジェクトのプロパティに代入すれば良い
ただしパラメータを動的に指定する処理やらUIやらを構築する手間とか考えたら結局セルコピーでよくねってなる
199デフォルトの名無しさん (ブーイモ MMbf-AIRZ)
2019/12/22(日) 09:13:02.87ID:m/MVfWr2M office2010から2016へ変えたらマクロの遅さが気になって
セルコピーを別の方法でやれないか考えてる
セルコピーを別の方法でやれないか考えてる
200デフォルトの名無しさん (ワッチョイ 9f59-Lpm9)
2019/12/22(日) 10:54:11.14ID:sgFeqmUl0 マクロが遅いんじゃなくてPCのスペックが貧弱過ぎるんじゃないか
201デフォルトの名無しさん (ワッチョイ d75f-+Tiu)
2019/12/22(日) 11:54:58.14ID:M+v9sXGU0202デフォルトの名無しさん (ワッチョイ b7da-r9Jq)
2019/12/22(日) 12:26:41.63ID:cYIprE7S0203デフォルトの名無しさん (アークセー Sxcb-KMkw)
2019/12/22(日) 14:42:00.45ID:qo1j1gBdx >>201
そこまでやるならmhtか何かでコード生成してからxls変換してレンダリングする方がいいよねって話になってしまうからな
そこまでやるならmhtか何かでコード生成してからxls変換してレンダリングする方がいいよねって話になってしまうからな
204デフォルトの名無しさん (ワッチョイ ce75-RbSw)
2019/12/27(金) 23:18:51.19ID:89CBNjra0 んあ
205デフォルトの名無しさん (ワッチョイ 0101-Nxir)
2019/12/27(金) 23:55:11.89ID:kLvnMS830 北海道のグラサンスーパーハゲザーはここにはこないのー?
206デフォルトの名無しさん (ワッチョイ d4da-K0SF)
2019/12/28(土) 10:04:17.04ID:Ht/sR5FE0 北海道にいるんだろ
207デフォルトの名無しさん (ワッチョイ 0101-Nxir)
2019/12/28(土) 11:09:10.42ID:iMlStgtR0 あなたのハゲにサクセスしたい
208デフォルトの名無しさん (アウアウウー Saab-WVy2)
2019/12/28(土) 17:00:07.97ID:SHykekh8a 休みに入って大人しくなったな
209デフォルトの名無しさん (ワッチョイ 067d-K+LJ)
2020/01/01(水) 22:49:57.07ID:/3koq0Lq0 フォルダ名を取得し名前を変える処理をしたいのですが、フォルダ名の頭に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
ほぼネットから引用したものですが。。
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デフォルトの名無しさん (ワッチョイ c268-UAPS)
2020/01/01(水) 22:54:36.69ID:Oh0xulqx0211デフォルトの名無しさん (ワッチョイ 067d-K+LJ)
2020/01/01(水) 23:43:11.75ID:/3koq0Lq0212デフォルトの名無しさん (ワッチョイ ad7c-bcBw)
2020/01/02(木) 00:01:52.13ID:KGMPhTA00213デフォルトの名無しさん (ワッチョイ c268-UAPS)
2020/01/02(木) 00:13:18.61ID:4cnj/64c0 VBAはそもそもビジュアルベーシックフォーアプリケーション
エクセル(他office製品)のための言語
Excelの範疇も何もないよ
エクセル(他office製品)のための言語
Excelの範疇も何もないよ
214デフォルトの名無しさん (アークセー Sxf1-uWm+)
2020/01/02(木) 00:44:32.37ID:C9nM6Ix2x セルにフォルダ名を入れなきゃならない理由が全く分からない
215デフォルトの名無しさん (ワッチョイ 4259-F9A1)
2020/01/02(木) 00:52:53.68ID:m04meMbs0 PowerQueryにデータの参照元渡すとか
216デフォルトの名無しさん (ワッチョイ 0610-mVj1)
2020/01/02(木) 11:28:52.88ID:yN8yk3jo0 マクロでCSV書き出ししたデータですが
どうも1行ごとに最後のセルの末尾に勝手に改行コードが入っているようです
これはなんとかならないでしょうか
その改行コードもCRLFで言うところのCRだけのようで、見かけ上全くわかりません
aaa,ddd,ccc
とあったら、cccの末尾に見えないCFが張り付いている感じです
urlエンコードで見ると ccc%0D みたいな感じです
どうしたら綺麗に書き出せますか?
どうも1行ごとに最後のセルの末尾に勝手に改行コードが入っているようです
これはなんとかならないでしょうか
その改行コードもCRLFで言うところのCRだけのようで、見かけ上全くわかりません
aaa,ddd,ccc
とあったら、cccの末尾に見えないCFが張り付いている感じです
urlエンコードで見ると ccc%0D みたいな感じです
どうしたら綺麗に書き出せますか?
217デフォルトの名無しさん (スプッッ Sd0a-UAPS)
2020/01/02(木) 12:02:15.68ID:33UW29zWd218デフォルトの名無しさん (ワッチョイ e5da-UAPS)
2020/01/02(木) 12:48:11.80ID:/IgTqK/90 セル内で改行しても平気か確認した方がいい
219デフォルトの名無しさん (ワッチョイ ad7c-bcBw)
2020/01/02(木) 12:53:49.13ID:KGMPhTA00220デフォルトの名無しさん (ワッチョイ ad7c-bcBw)
2020/01/02(木) 12:58:08.65ID:KGMPhTA00 あと勝手に入ってるのではなく元々のテキストファイルに入ってるんだろう
221デフォルトの名無しさん (ワッチョイ 0610-pIXJ)
2020/01/02(木) 15:17:06.96ID:yN8yk3jo0 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)、
若干気持ち悪いですが、趣味プログラムなので運用で対応します。
みなさんありがとうございました。
>>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デフォルトの名無しさん (ブーイモ MM85-19tT)
2020/01/02(木) 16:37:15.04ID:yYKIO5swM 北海道のグラサンスーパーハゲザーはここにはこないのー?
223デフォルトの名無しさん (ワッチョイ 2eda-UAPS)
2020/01/02(木) 17:52:03.38ID:YgEQc8yF0224デフォルトの名無しさん (ワッチョイ 422c-RM0q)
2020/01/02(木) 21:25:07.68ID:ShHqIFTQ0 一般論として例えば、Ruby のCSV の規格にも、
行区切り文字・列区切り文字・クォート文字などがある
特に設定しないデフォルトでは、それらは、
改行コード・カンマ・ダブルクォーテーションになる
もし、それらが無ければ、CSVの要件を満たさないw
つまり、CSVの規格ではありませんw
行区切り文字・列区切り文字・クォート文字などがある
特に設定しないデフォルトでは、それらは、
改行コード・カンマ・ダブルクォーテーションになる
もし、それらが無ければ、CSVの要件を満たさないw
つまり、CSVの規格ではありませんw
225デフォルトの名無しさん (アウアウウー Saa5-VrsN)
2020/01/02(木) 23:23:58.57ID:1vLrUBFwa ルビカスが何を言おうと、世の中ではExcelが出力するCSVが標準のCSVだ
226デフォルトの名無しさん (ワッチョイ 5991-8sDV)
2020/01/03(金) 10:32:03.45ID:R/lajPDg0 CSVは自前でテキストファイル読み込み+自前で区切り扱いが基本。
区切りが何であろうと、データの形式が何であろうと全て自分でコントロール出来るし速度も速い。
区切りが何であろうと、データの形式が何であろうと全て自分でコントロール出来るし速度も速い。
227デフォルトの名無しさん (ワッチョイ 49d0-Fu3+)
2020/01/03(金) 12:29:48.12ID:V2sewd5k0228デフォルトの名無しさん (ワッチョイ 4279-A9ky)
2020/01/03(金) 18:33:14.85ID:LoHkYQxe0 使い続ける以上CSVとの戦いは続くのだ
229デフォルトの名無しさん (アークセー Sxf1-uWm+)
2020/01/03(金) 18:50:10.73ID:k7eftYc7x モダンExcelが一般化してきた今ならクエリでCSVの開き方を指定して読み込むのがいいんじゃないの
CSVをエクセルで直接開くといろいろ勝手なことをしてくれるので
CSVをエクセルで直接開くといろいろ勝手なことをしてくれるので
230デフォルトの名無しさん (スフッ Sd62-F9A1)
2020/01/03(金) 19:06:41.78ID:esau8hBed PowerQueryのコードを書くのはVBA以上にハードルが高いぞ
231デフォルトの名無しさん (ブーイモ MMb6-OUNV)
2020/01/03(金) 19:55:22.39ID:3Uhjf7eSM PowerQueryコード書かなきゃいけないの?
GUIでできる範囲だと不十分なの?
GUIでできる範囲だと不十分なの?
232デフォルトの名無しさん (アークセー Sxf1-uWm+)
2020/01/03(金) 19:58:54.81ID:k7eftYc7x そんなにハードル高いか?
テキストファイルの読み込みの処理をスクラッチするより明らかに楽だし処理速度も速いと思うが
例えば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
テキストファイルの読み込みの処理をスクラッチするより明らかに楽だし処理速度も速いと思うが
例えば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デフォルトの名無しさん (アークセー Sxf1-uWm+)
2020/01/03(金) 20:07:37.72ID:k7eftYc7x PowerQueryだったらもっと簡単だろう
Csv.Documentにソースのパスとメタ情報を渡してテーブルを取得するだけだしGUIでステップ記録できる
Csv.Documentにソースのパスとメタ情報を渡してテーブルを取得するだけだしGUIでステップ記録できる
234デフォルトの名無しさん (ワッチョイ 4279-A9ky)
2020/01/03(金) 20:56:20.20ID:LoHkYQxe0 CSV読み込みの話してんのになんで書き込みの回答してんだろうこの子
235デフォルトの名無しさん (アークセー Sxf1-uWm+)
2020/01/03(金) 21:32:33.80ID:k7eftYc7x236デフォルトの名無しさん (アークセー Sxf1-uWm+)
2020/01/03(金) 22:10:30.43ID:k7eftYc7x237デフォルトの名無しさん (ワッチョイ 2eda-UAPS)
2020/01/03(金) 22:23:49.87ID:X7hap7HH0 >>230
全然。
基本的にはリボンの機能使った操作が1つずつのステップになっていく。
ステップの1つ1つがマクロみたいなもの。
「詳細クエリー」を見て初めて「コードはこうなってるんだ・・・」
という感じ。
もっとも、M Functionのレファレンスやパラメータあたり説明が
英語でもまだ不親切なので、
使えてない部分が多分にはあるけど。
ただ、VBAのように出来る範囲が広範囲なわけではなく、
取得したデータの成形に特化してる。
スクレイピングについては
Pythonみたいに取得対象のWeb画面で
IDやパスワード入力するとか、
ボタンを押すみたいなことも出来ない模様。
全然。
基本的にはリボンの機能使った操作が1つずつのステップになっていく。
ステップの1つ1つがマクロみたいなもの。
「詳細クエリー」を見て初めて「コードはこうなってるんだ・・・」
という感じ。
もっとも、M Functionのレファレンスやパラメータあたり説明が
英語でもまだ不親切なので、
使えてない部分が多分にはあるけど。
ただ、VBAのように出来る範囲が広範囲なわけではなく、
取得したデータの成形に特化してる。
スクレイピングについては
Pythonみたいに取得対象のWeb画面で
IDやパスワード入力するとか、
ボタンを押すみたいなことも出来ない模様。
238デフォルトの名無しさん (アークセー Sxf1-uWm+)
2020/01/03(金) 22:43:05.12ID:3zmXV6NNx データの成形に特化と言ってもVBAでスクラッチすると恐ろしく面倒なJoinとかのSQLチックな処理は全て実行できるので、データ処理の面ではVBAより手軽で便利
あとAccessDBやSQL ServerやOBDCはもちろん、ファイルシステムとかExchangeサーバとかSharePointリストとか、およそデータベースとして扱えるデータストアの情報は全て取得できる
フォルダ内のファイルの属性情報を取得する処理のためだけにいちいちFileSystemObjectのインスタンスとかを使ってスクラッチする必要がなくなると考えればめちゃくちゃ便利
あとAccessDBやSQL ServerやOBDCはもちろん、ファイルシステムとかExchangeサーバとかSharePointリストとか、およそデータベースとして扱えるデータストアの情報は全て取得できる
フォルダ内のファイルの属性情報を取得する処理のためだけにいちいちFileSystemObjectのインスタンスとかを使ってスクラッチする必要がなくなると考えればめちゃくちゃ便利
239デフォルトの名無しさん (ワッチョイ 0610-pIXJ)
2020/01/04(土) 15:59:54.32ID:dDunGyfu0 >>227
みています
ご指摘の通り、\nでspritかけてました!
\nってCR+LFじゃなかったんですね…
この後都合があるのですぐには試せませんが、
その辺確認してみます。
ありがとうございます!
みています
ご指摘の通り、\nでspritかけてました!
\nってCR+LFじゃなかったんですね…
この後都合があるのですぐには試せませんが、
その辺確認してみます。
ありがとうございます!
240デフォルトの名無しさん (ワッチョイ c268-UAPS)
2020/01/04(土) 16:12:12.74ID:8fEwlZFG0 \nはLFじゃなかったか
windowsの改行は\r\nだったような
windowsの改行は\r\nだったような
241デフォルトの名無しさん (ワッチョイ 0602-G4oO)
2020/01/04(土) 17:52:00.86ID:ALZ03HNg0 EditBoxでは\r\nでRichEditBoxでは\nだねWindows
242デフォルトの名無しさん (ワッチョイ e5da-UAPS)
2020/01/04(土) 17:56:48.54ID:+4weKQQc0 CR+LFの定数の vbCrLf か vbNewLine でいいんじゃね
243デフォルトの名無しさん (ワッチョイ c268-UAPS)
2020/01/04(土) 18:04:55.94ID:8fEwlZFG0 vbNewLineいいよね
244デフォルトの名無しさん (ワッチョイ 49d0-Fu3+)
2020/01/04(土) 18:23:56.78ID:ZrFrOERU0245デフォルトの名無しさん (ワッチョイ 9901-19tT)
2020/01/04(土) 18:40:58.78ID:HwWXKum00 北海道のグラサンスーパーハゲザーはここにはこないのー?
246デフォルトの名無しさん (ワッチョイ e5da-UAPS)
2020/01/05(日) 18:31:31.28ID:bipf879T0 いつまで過去の人探してんだよ
247デフォルトの名無しさん (アウアウエー Sa4a-BfT8)
2020/01/05(日) 21:01:37.71ID:7hEhyOPXa Private Declare PtrSafe Function URLDownloadToFile Lib "urlmon" ()
Alias "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String,
ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long
Expect end of statementとエラーが出ます。
なにがいけないのでしょうか?
Alias "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String,
ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long
Expect end of statementとエラーが出ます。
なにがいけないのでしょうか?
248デフォルトの名無しさん (ワッチョイ 49d0-Fu3+)
2020/01/05(日) 22:30:48.28ID:+vnZOjsp0 >>247
・DLL名(urlmon)の後の()が余計
・1行目と2行目の末尾に「半角スペース」+「半角アンダースコア」がちゃんとついているか確認
↓こんなかんじ
Private Declare PtrSafe Function URLDownloadToFile Lib "urlmon" _
Alias "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, _
ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long
・DLL名(urlmon)の後の()が余計
・1行目と2行目の末尾に「半角スペース」+「半角アンダースコア」がちゃんとついているか確認
↓こんなかんじ
Private Declare PtrSafe Function URLDownloadToFile Lib "urlmon" _
Alias "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, _
ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long
249デフォルトの名無しさん (アウアウエー Sa4a-BfT8)
2020/01/05(日) 22:56:42.27ID:7hEhyOPXa250デフォルトの名無しさん (ワッチョイ be02-RM0q)
2020/01/06(月) 00:41:12.95ID:NdtK1Vru0 初心者につき基本的な質問かもしれず恐縮なんですが、
@Range("A10:B12").Value = Range("A1:A2").Value
とすると、A12:B12は#N/Aとなり、A10:A11、B10:B11はA1:A2の値が貼り付けられるのはなぜでしょうか。
ARange("A10").Value = Range("A1:B2").Value
とすると、A10にA1の値が貼付けられるのはなぜでしょうか。
@については、入力元の行・列範囲が1の場合はそれをひと固まりと認識して、
出力先の行列範囲>1の部分も入力元の値を入れようとするため
Aについては、エクセルの構成上、選択範囲の開始は左上端であり、
出力先が1セルしかない場合は入力元の範囲の開始セルのみを貼り付けようとするため
などと理由(というか状況でしかない)を言語化してみたのですがいまいち腑に落ちず…
もし仕組みをご存知の方がいらっしゃったら教えていただけませんか…?
@Range("A10:B12").Value = Range("A1:A2").Value
とすると、A12:B12は#N/Aとなり、A10:A11、B10:B11はA1:A2の値が貼り付けられるのはなぜでしょうか。
ARange("A10").Value = Range("A1:B2").Value
とすると、A10にA1の値が貼付けられるのはなぜでしょうか。
@については、入力元の行・列範囲が1の場合はそれをひと固まりと認識して、
出力先の行列範囲>1の部分も入力元の値を入れようとするため
Aについては、エクセルの構成上、選択範囲の開始は左上端であり、
出力先が1セルしかない場合は入力元の範囲の開始セルのみを貼り付けようとするため
などと理由(というか状況でしかない)を言語化してみたのですがいまいち腑に落ちず…
もし仕組みをご存知の方がいらっしゃったら教えていただけませんか…?
251デフォルトの名無しさん (ワッチョイ 4d8e-1zv1)
2020/01/06(月) 02:06:32.04ID:IxstRIsW0 >>250
原因はお前の知能障害の頭
原因はお前の知能障害の頭
252デフォルトの名無しさん (ワッチョイ 422c-RM0q)
2020/01/06(月) 08:01:31.75ID:jMeFAWx00 Range の使い方ぐらい、検索すれば見つかるのじゃないの?
他人が作った仕様を、推測するのは時間のムダ
それに、推測して当たっているように見えても、
仕様書で確認していない推測では、どのみち仕事では使えない
君のその推測は、確実なんだろうね?
と、単に聞かれても、返答に困るw
たぶん、間違いないと思いますと言っても、
たぶんじゃ困る、仕様書を確認してくれと言われるので、
結局、推測した時間はムダw
他人が作った仕様を、推測するのは時間のムダ
それに、推測して当たっているように見えても、
仕様書で確認していない推測では、どのみち仕事では使えない
君のその推測は、確実なんだろうね?
と、単に聞かれても、返答に困るw
たぶん、間違いないと思いますと言っても、
たぶんじゃ困る、仕様書を確認してくれと言われるので、
結局、推測した時間はムダw
253デフォルトの名無しさん (オイコラミネオ MM49-Ivq/)
2020/01/06(月) 08:04:47.15ID:D3635f2eM254デフォルトの名無しさん (アークセー Sxf1-uWm+)
2020/01/06(月) 08:31:23.15ID:6Tgfzfa6x Power Queryの式がVBAで取得編集出来るの初めて知った
凄い便利だわ
凄い便利だわ
255デフォルトの名無しさん (ワッチョイ 2eda-UAPS)
2020/01/06(月) 11:36:21.98ID:MgTSKGZp0256デフォルトの名無しさん (ワッチョイ 0610-pIXJ)
2020/01/06(月) 16:14:57.44ID:uFshMbVq0257デフォルトの名無しさん (アークセー Sxf1-uWm+)
2020/01/06(月) 20:19:04.42ID:3xuf6Bblx >>255
そうそうこのあたりの機能だな
流石にM言語はエディタ使って書いた方が綺麗に書けるからマクロ記録に頼る理由はないが
あとModelオブジェクトというのも追加されてて、そっちはデータモデル関連を扱える
VBAも本当にモダンExcel向けの機能が充実してきたなぁという感じ
そうそうこのあたりの機能だな
流石にM言語はエディタ使って書いた方が綺麗に書けるからマクロ記録に頼る理由はないが
あとModelオブジェクトというのも追加されてて、そっちはデータモデル関連を扱える
VBAも本当にモダンExcel向けの機能が充実してきたなぁという感じ
258デフォルトの名無しさん (ワッチョイ ade6-UAPS)
2020/01/06(月) 22:02:59.64ID:CTb2ztSI0 モダンってオワコンWPFの印象が強すぎてちょっと・・・
259デフォルトの名無しさん (ワッチョイ c268-UAPS)
2020/01/06(月) 22:53:04.03ID:TKdH9VSv0 WPFとSilverlightどっちを習得しようと悩んでた時期が、僕にもありました
260デフォルトの名無しさん (ワッチョイ 9901-Ivq/)
2020/01/07(火) 00:47:29.56ID:D2brWHFz0261デフォルトの名無しさん (スプッッ Sdc2-BdgP)
2020/01/07(火) 09:28:54.82ID:uInZCPkrd その未来はPythonで実現してます
262デフォルトの名無しさん (アウアウエー Sa7f-G18V)
2020/01/08(水) 23:15:43.07ID:a625Lcnla263デフォルトの名無しさん (ワッチョイ 5fda-///2)
2020/01/08(水) 23:29:57.17ID:GYx+h9AP0 どうでもいいんじゃないの。
そんなのが会社のPCで普通に使えるようになるのは、どうせ何年も先の事だろう。
そんなのが会社のPCで普通に使えるようになるのは、どうせ何年も先の事だろう。
264デフォルトの名無しさん (アウアウエー Sa7f-G18V)
2020/01/09(木) 00:01:07.52ID:0xvQwvASa >今後数週間以内に企業向けの“Office 365”(E3/E5ライセンス)で利用可能となる。
読めないのか?後数週間でVBAは駆逐されるかもしれんのだぞ?
読めないのか?後数週間でVBAは駆逐されるかもしれんのだぞ?
265デフォルトの名無しさん (ワッチョイ 5fe6-lB9F)
2020/01/09(木) 00:35:06.13ID:2TKjHA5n0 マクロウィルスの共有機能まであるのか
266デフォルトの名無しさん (ワッチョイ 5f7c-woae)
2020/01/09(木) 00:58:29.64ID:C+9x90AF0 何ヶ月先もVBAの依頼で詰まってるけど
267デフォルトの名無しさん (ワッチョイ 5f8a-SoGe)
2020/01/09(木) 01:49:21.73ID:yss0diSi0 若い人は知らないだろうけど、昔、リニアモーターカーというのがあってね。
268デフォルトの名無しさん (アークセー Sxb3-BW+8)
2020/01/09(木) 07:58:16.77ID:9wujfMIjx269デフォルトの名無しさん (スップ Sd1f-3KZm)
2020/01/09(木) 09:59:33.76ID:jgUkMqMwd >>262
VBA終了の合図
VBA終了の合図
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 青森 緊急地震速報 [ぐれ★]
- 【速報】衆院議員定数削減法案、自民・維新が今国会成立見送りで調整 [Hitzeschleier★]
- ミス・ユニバース フィンランド代表の「つり目」写真が波紋… 本人釈明も批判やまず 協会謝罪「徹底的に検証」へ★2 [冬月記者★]
- 「偽サッチャー」「自滅的」「時代遅れ」 高市首相の経済政策を海外メディアが酷評 ★2 [蚤の市★]
- 東京都「都民の税金1.5兆円が国に奪われている」「全国に分配されている」に地方民ブチギレ ★2 [Hitzeschleier★]
- 「もうキモくてキモくて…」29歳女性が語る“おぢアタック”の実態。「俺ならイケるかも」年下女性を狙う勘違い中年男性に共通点が★5 [Hitzeschleier★]
- 地蔵 [268244553]
- 地震だぁぁぁあ
- 小野田紀美「今年の漢字は『推』!、推しが総理になりまして。推し活をした1年だったなあと」 [256556981]
- 街で見かける謎のシールあるじゃん?
- ぢしん [856698234]
- 【悲報】ネトウヨの次のターゲット「渡邊渚」に決まるwwwwwwwwwwwwwwwwwwwww [455031798]
