!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:ngrqyTy20210デフォルトの名無しさん (ワッチョイ 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終了の合図
270デフォルトの名無しさん (ドコグロ MM53-JyDu)
2020/01/09(木) 10:11:49.50ID:+yE1fb2HM > 既存のVBAは比較的ハイスキルな開発者向けである
どこの時空の話だろう
どこの時空の話だろう
271デフォルトの名無しさん (ワッチョイ df91-88rQ)
2020/01/09(木) 10:23:13.99ID:0t9GlNIo0 これWeb版の機能だろ。
そもそもExcel95の時代からマクロの記録機能は有るだろ。
そもそもExcel95の時代からマクロの記録機能は有るだろ。
272デフォルトの名無しさん (ワッチョイ ffcc-ErPi)
2020/01/09(木) 20:22:30.66ID:QTlbFy+y0 ↓のマクロを実行するとエラー438になって動きません。原因を教えてくださいm(__)m
・DE3とDS3の値のいずれかの高い数値が1であれば、11行目〜12行目を削除
・DE3とDS3の値のいずれか高い数値が2であれば何もしない
・DE3とDS3の値のいずれか高い数値が3以上であれば、11行目〜12行目をコピーして
DE3とDS3のいずれか高い数値−2回を、13行目以降に2行づつ貼り付ける
*DE3とDS3はいずれも1以上の整数です
Dim i As Integer
Dim cnt As Integer, a As Range
With ActiveSheet
i = .Max(Range("DE3", "DS3"))
Select Case i
Case Is = 1
.Rows("11:12").Delete
Case Is = 2
' なにもしない
Case Is >= 3
.Rows("11:12").Copy
Set a = .Range("A13") ' 貼り付け開始位置
For cnt = 3 To i '3以上のときはその値回数分貼り付けを繰り返す
a.PasteSpecial xlPasteAllMergingConditionalFormats '貼り付ける種類はお好みで
Set a = a.Offset(2, 0) ' 貼り付け先を2行下へ
Next cnt
End Select
End With
End Sub
・DE3とDS3の値のいずれかの高い数値が1であれば、11行目〜12行目を削除
・DE3とDS3の値のいずれか高い数値が2であれば何もしない
・DE3とDS3の値のいずれか高い数値が3以上であれば、11行目〜12行目をコピーして
DE3とDS3のいずれか高い数値−2回を、13行目以降に2行づつ貼り付ける
*DE3とDS3はいずれも1以上の整数です
Dim i As Integer
Dim cnt As Integer, a As Range
With ActiveSheet
i = .Max(Range("DE3", "DS3"))
Select Case i
Case Is = 1
.Rows("11:12").Delete
Case Is = 2
' なにもしない
Case Is >= 3
.Rows("11:12").Copy
Set a = .Range("A13") ' 貼り付け開始位置
For cnt = 3 To i '3以上のときはその値回数分貼り付けを繰り返す
a.PasteSpecial xlPasteAllMergingConditionalFormats '貼り付ける種類はお好みで
Set a = a.Offset(2, 0) ' 貼り付け先を2行下へ
Next cnt
End Select
End With
End Sub
273デフォルトの名無しさん (ワッチョイ 5fce-lB9F)
2020/01/09(木) 20:37:39.44ID:R5Jo4gYe0 >>272
i = WorksheetFunction.Max(.Range("DE3", "DS3"))
i = WorksheetFunction.Max(.Range("DE3", "DS3"))
275デフォルトの名無しさん (ワッチョイ df01-qx2z)
2020/01/09(木) 21:37:55.27ID:o7IUVb3B0 あなたのハゲにサクセスしたい
276デフォルトの名無しさん (ササクッテロラ Spb3-y1/V)
2020/01/09(木) 23:19:52.51ID:CBGZn1t+p やっぱり少し騒ぎになってたか
お前らこれから少しは
Javascript勉強しといた方がいいぞ
お前らこれから少しは
Javascript勉強しといた方がいいぞ
277デフォルトの名無しさん (ワッチョイ 7f68-lB9F)
2020/01/09(木) 23:35:37.48ID:SuIB+b6T0 >>276
JSは癖があるけど、あれはwebの話
既にあるオブジェクトに対してどうこうするならVBAと特に変わらんぞ
adobeのJSは本当にクソだった
※オブジェクトに名前がついてないので、「topプロパティが一番大きいオブジェクトにはxx」などと名付けをしなければならなかった
JSは癖があるけど、あれはwebの話
既にあるオブジェクトに対してどうこうするならVBAと特に変わらんぞ
adobeのJSは本当にクソだった
※オブジェクトに名前がついてないので、「topプロパティが一番大きいオブジェクトにはxx」などと名付けをしなければならなかった
278デフォルトの名無しさん (ワッチョイ 7f68-lB9F)
2020/01/09(木) 23:36:34.25ID:SuIB+b6T0 VBAで無名関数とか即時関数は別にやらんやろ
webのJS使ってる人が参入しやすいようにしてるだけやで
webのJS使ってる人が参入しやすいようにしてるだけやで
279デフォルトの名無しさん (ブーイモ MM03-XGJ0)
2020/01/10(金) 00:22:51.50ID:D5emfq5uM Googleスプレッドシートの
マクロ(GAS≒Javascript拡張)を移植するだけだぞ
マクロ(GAS≒Javascript拡張)を移植するだけだぞ
280デフォルトの名無しさん (ワッチョイ df01-2es0)
2020/01/10(金) 00:52:55.45ID:1ovLJy7s0 TypeScriptベースってあるけど
本家と比べてどこまで厳格なのか分からんが
本家と比べてどこまで厳格なのか分からんが
281デフォルトの名無しさん (ワッチョイ 7f68-lB9F)
2020/01/10(金) 07:05:02.06ID:uF+RY5wD0 よほどテクニカルな記述しなければ普通に動くじゃろ
282デフォルトの名無しさん (アークセー Sxb3-BW+8)
2020/01/10(金) 07:14:14.47ID:jjRPWpspx Typescriptはアクセス修飾子をサポートしてるから即時関数でのスコープ管理はしなくていいだろ
無名関数は使いどころあるかもしれないが
無名関数は使いどころあるかもしれないが
283デフォルトの名無しさん (スップ Sd1f-3KZm)
2020/01/10(金) 09:48:49.20ID:IluxULEbd 大慌てしてて草
284デフォルトの名無しさん (ラクッペ MM23-sMkA)
2020/01/10(金) 22:41:08.84ID:19Jhwmx5M wshのjscript使うのとはまったく違うのかな?
285デフォルトの名無しさん (ワッチョイ 7f12-3KZm)
2020/01/11(土) 03:59:52.86ID:VgPP357Y0 TSでも時代遅れなんだけどね
286デフォルトの名無しさん (ワッチョイ df01-mnsv)
2020/01/11(土) 04:13:01.78ID:o+klbI+l0 お前らってプログラミング言語の話題になると、何ですぐ時代遅れ論争始めるの?
287デフォルトの名無しさん (ワッチョイ 5fa2-G18V)
2020/01/11(土) 06:14:53.73ID:G5+XY0gL0 結局仕事の効率を上げれるかどうかが肝だけど新しい言語を使ってる俺すごいで思考停止しちゃうんだろうなー
288デフォルトの名無しさん (ドコグロ MM7f-JyDu)
2020/01/11(土) 06:26:51.15ID:Uc6AtsCZM TSが時代遅れはともかくVBAはさすがにもう仕事の効率とかそういう次元の話じゃない
クレジットカードの有効期限が迫ってるようなもんだ
クレジットカードの有効期限が迫ってるようなもんだ
289デフォルトの名無しさん (アウアウウー Saa3-rY/a)
2020/01/11(土) 12:18:46.28ID:4Kbsl1epa Option Explicit
Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub TableControl()
Dim ie As InternetExplorer
Dim targetURL As String: targetURL = "http://www.ikachi.org/sample/sample10.html"
Set ie = GetIEObject(targetURL)
If (ie.LocationURL = "") Then
MsgBox "Plz Open the Web page"
Exit Sub
End If
End Sub
Public Function GetIEObject(ByVal targetURL As String) As InternetExplorer
Set GetIEObject = Nothing
Dim sh As Object
Set sh = CreateObject("Shell.Application")
Dim w As Object
For Each w In sh.Windows
If (TypeOf w Is InternetExplorer) And (w.LocationURL = targetURL) Then
Set GetIEObject = w
Exit For
End If
Next
End Function
でie.LocationURL = ""でエラーが出るのですが、booleanだがらでしょうか?
Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub TableControl()
Dim ie As InternetExplorer
Dim targetURL As String: targetURL = "http://www.ikachi.org/sample/sample10.html"
Set ie = GetIEObject(targetURL)
If (ie.LocationURL = "") Then
MsgBox "Plz Open the Web page"
Exit Sub
End If
End Sub
Public Function GetIEObject(ByVal targetURL As String) As InternetExplorer
Set GetIEObject = Nothing
Dim sh As Object
Set sh = CreateObject("Shell.Application")
Dim w As Object
For Each w In sh.Windows
If (TypeOf w Is InternetExplorer) And (w.LocationURL = targetURL) Then
Set GetIEObject = w
Exit For
End If
Next
End Function
でie.LocationURL = ""でエラーが出るのですが、booleanだがらでしょうか?
290デフォルトの名無しさん (ワッチョイ 7f02-elwi)
2020/01/11(土) 12:56:17.13ID:0zjnxXo90 >>289
参照設定してないんちゃう
参照設定してないんちゃう
291デフォルトの名無しさん (ワッチョイ df91-88rQ)
2020/01/11(土) 12:58:17.36ID:vlDYQNOj0 何にも分かってないバカが多い。
汎用言語は正に競合だらけだからこそ、VBAの優位性が理解出来ない。
VBAの対象となってるのは他言語じゃゴミしか出来ない。
今後、TSで同じようなことが出来るならTSに移って行くだけのこと。
汎用言語は正に競合だらけだからこそ、VBAの優位性が理解出来ない。
VBAの対象となってるのは他言語じゃゴミしか出来ない。
今後、TSで同じようなことが出来るならTSに移って行くだけのこと。
292デフォルトの名無しさん (ドコグロ MM7f-qx2z)
2020/01/11(土) 13:10:09.62ID:CiEu/gQJM293デフォルトの名無しさん (ワッチョイ df91-88rQ)
2020/01/11(土) 13:31:11.90ID:vlDYQNOj0 >>289
そもそも、これVBAのコードなの?
なんか、初心者がコピペしたんじゃないの?
個人的に間違っちゃいないけど気になるのは、InternetExplorerで宣言してるのにCreateObject使ってる所。
間違ってると思うのはTypeOf。
VBAでこんな単語使ってるの初めて見た。
構文的にこの部分でエラーにならないのにびっくりした。
どちらにしろGetIEObjectでieが空っぽで帰ってる。
そもそも、これVBAのコードなの?
なんか、初心者がコピペしたんじゃないの?
個人的に間違っちゃいないけど気になるのは、InternetExplorerで宣言してるのにCreateObject使ってる所。
間違ってると思うのはTypeOf。
VBAでこんな単語使ってるの初めて見た。
構文的にこの部分でエラーにならないのにびっくりした。
どちらにしろGetIEObjectでieが空っぽで帰ってる。
294デフォルトの名無しさん (ワッチョイ df91-88rQ)
2020/01/11(土) 13:37:40.62ID:vlDYQNOj0 一応言っておくがTypeOf自体が間違いじゃない。
こういう単語を使ったコードもあり得る。
でも自分は見たこと無いし、今回のコードもここが間違ってる。
こういう単語を使ったコードもあり得る。
でも自分は見たこと無いし、今回のコードもここが間違ってる。
295デフォルトの名無しさん (ワッチョイ df2f-JQ6m)
2020/01/11(土) 14:02:25.84ID:6iu6Iqm10 >>293-294
いや、コード的には間違ってない
>GetIEObjectでieが空っぽで帰ってる
のは間違いないけど、このコードが正しく動く前提として
IEで指定されたURLが開いてる必要があるだけ
まあ指定URLが開いていたら、下のIFがスルーされるから
示された部分だけでは何がしたいコードがよくわからんが
いや、コード的には間違ってない
>GetIEObjectでieが空っぽで帰ってる
のは間違いないけど、このコードが正しく動く前提として
IEで指定されたURLが開いてる必要があるだけ
まあ指定URLが開いていたら、下のIFがスルーされるから
示された部分だけでは何がしたいコードがよくわからんが
296デフォルトの名無しさん (ワッチョイ df2f-JQ6m)
2020/01/11(土) 14:13:44.58ID:6iu6Iqm10 一応Win10の365で動くか試したみた結果ね
つか気になってちょっと調べてみたけど
TypeOf って日本語ドキュメントに記載ないっぽいな
VBAのバージョンとかで使えないかもしれん
なんにせよShellでIE取得して操作とかお勧めしかねるけどな
つか気になってちょっと調べてみたけど
TypeOf って日本語ドキュメントに記載ないっぽいな
VBAのバージョンとかで使えないかもしれん
なんにせよShellでIE取得して操作とかお勧めしかねるけどな
297デフォルトの名無しさん (アウアウウー Saa3-rY/a)
2020/01/11(土) 16:02:20.96ID:35/vo8rZa 289です。
>> 292
すみません、エラー内容は「オブジェクト変数または With ブロック変数が設定されていません」です。
>> 293
Excel VBAでクローリング&スクレイピング(五十嵐貴之著)のP137に書かれているコードなのですが。
余りよくないのでしょうか。
>> 292
すみません、エラー内容は「オブジェクト変数または With ブロック変数が設定されていません」です。
>> 293
Excel VBAでクローリング&スクレイピング(五十嵐貴之著)のP137に書かれているコードなのですが。
余りよくないのでしょうか。
298デフォルトの名無しさん (ワッチョイ 7f01-qx2z)
2020/01/11(土) 16:36:52.33ID:AmOO0hUd0299デフォルトの名無しさん (ワッチョイ df01-qx2z)
2020/01/11(土) 16:57:09.64ID:Wvm4dwrk0 北海道のグラサンスーパーハゲザーはここにはこないのー?
300デフォルトの名無しさん (ワッチョイ df2d-Zuld)
2020/01/11(土) 18:06:59.10ID:mnvMO3uc0 キタ━━━━。゚+.ヽ(´∀`*)ノ ゚+.゚━━━━!
301デフォルトの名無しさん (ワッチョイ df40-mnsv)
2020/01/12(日) 10:23:37.27ID:GxqlSy4l0 >>298
そもそもShellWindowsオブジェクトはイテレータでIEオブジェクトを渡してるから型判定自体不要
修正版
Sub TableControl()
Const targetURL$ = "http://www.ikachi.org/sample/sample10.html"
Dim ie As InternetExplorer: Set ie = GetIEObject(targetURL)
If ie Is Nothing Then MsgBox "Plz Open the Web page": Exit Sub
'残りのコード
End Sub
Public Function GetIEObject(ByVal targetURL As String) As InternetExplorer
For Each GetIEObject In CreateObject("Shell.Application").Windows
If GetIEObject.LocationURL Like targetURL Then Exit Function
Next
Set GetIEObject = Nothing
End Function
久々に書いたから変な部分あるかもしれないが、これで一応MsgBoxは開く
個人的には、こんなややこしい事せずに普通にVBAで開いた方が確実だと思う
そもそもShellWindowsオブジェクトはイテレータでIEオブジェクトを渡してるから型判定自体不要
修正版
Sub TableControl()
Const targetURL$ = "http://www.ikachi.org/sample/sample10.html"
Dim ie As InternetExplorer: Set ie = GetIEObject(targetURL)
If ie Is Nothing Then MsgBox "Plz Open the Web page": Exit Sub
'残りのコード
End Sub
Public Function GetIEObject(ByVal targetURL As String) As InternetExplorer
For Each GetIEObject In CreateObject("Shell.Application").Windows
If GetIEObject.LocationURL Like targetURL Then Exit Function
Next
Set GetIEObject = Nothing
End Function
久々に書いたから変な部分あるかもしれないが、これで一応MsgBoxは開く
個人的には、こんなややこしい事せずに普通にVBAで開いた方が確実だと思う
302デフォルトの名無しさん (ワッチョイ 7fa3-qRB+)
2020/01/13(月) 12:47:26.86ID:Jh+AJgi90 AndAlsoってないんだっけ?
303デフォルトの名無しさん (ワッチョイ 7f01-qx2z)
2020/01/13(月) 12:51:11.64ID:nlvLw0Pz0 AndAlsoやOrElseはVB.NET
もうVB.NETでもいいからExcelに載せろよとは思う
もうVB.NETでもいいからExcelに載せろよとは思う
304デフォルトの名無しさん (アウアウエー Sa7f-G18V)
2020/01/13(月) 15:28:45.56ID:/UClz5Bsa はいネトウヨ論破wwww
現実という劇薬を投与されて憤死したなwwwww
現実という劇薬を投与されて憤死したなwwwww
305デフォルトの名無しさん (アウアウエー Sa7f-G18V)
2020/01/13(月) 15:29:12.31ID:/UClz5Bsa 誤爆したわ
306デフォルトの名無しさん (ワッチョイ 7f42-Hp8P)
2020/01/13(月) 15:35:18.58ID:v1ymyhJf0 イラン「誤爆した」
307デフォルトの名無しさん (アウアウウー Saa3-alJZ)
2020/01/13(月) 18:49:02.06ID:QiYXelOBa308デフォルトの名無しさん (ワッチョイ 7fa3-qRB+)
2020/01/14(火) 03:53:35.18ID:D4OVEYsz0 >>303
短絡評価ぇ…
短絡評価ぇ…
309デフォルトの名無しさん (ワッチョイ a9f8-otum)
2020/01/15(水) 09:32:44.41ID:8JJ3bs+B0 基本的な事ですいません。
ActiveWorkbook.SaveAs Filename:=Cells(2, 36) & yyyy & "年" & mm & "月" & dd & "日" & ".xlsm"
セル内の文章 と日付でセーブする機能を盛り込んでいます。
実行時ファイル名が変わってエラー無く、VBAが動き続けているのですが、
saveするフォルダ内に該当のエクセルファイルそのものが見当たりません。
見かけ上の問題だけか?と思い、停止してフォルダを検索しましたがエクセルファイルはありませんでした。
ActiveWorkbook.SaveAs Filenameというのは、新しく名前を付けて保存なので、中身はともかく実行されたらエクセルファイルは生成されますよね?
ActiveWorkbook.SaveAs Filename:=Cells(2, 36) & yyyy & "年" & mm & "月" & dd & "日" & ".xlsm"
セル内の文章 と日付でセーブする機能を盛り込んでいます。
実行時ファイル名が変わってエラー無く、VBAが動き続けているのですが、
saveするフォルダ内に該当のエクセルファイルそのものが見当たりません。
見かけ上の問題だけか?と思い、停止してフォルダを検索しましたがエクセルファイルはありませんでした。
ActiveWorkbook.SaveAs Filenameというのは、新しく名前を付けて保存なので、中身はともかく実行されたらエクセルファイルは生成されますよね?
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 米大統領報道官「日本と強固な同盟維持、中国とも協力」 [少考さん★]
- ミス・ユニバース フィンランド代表の「つり目」写真が波紋… 本人釈明も批判やまず 協会謝罪「徹底的に検証」へ [冬月記者★]
- 【おこめ券】鈴木憲和農相 小泉前農相の備蓄米放出を“反省”「備蓄の円滑な運営を図ってまいります」 [Hitzeschleier★]
- 1人3千円の食品高騰対策、何に使える? あいまいなまま衆院通過 [蚤の市★]
- ゆたぼん 二重手術を報告「めちゃくちゃ気に入っています」 [muffin★]
- 【山形】クマ駆除で誤射した猟友会隊員に町が1663万円請求へ...弾当たり男性大けが2023年 小国町 [nita★]
- 【マギレコ】VIPでマギアレコード&マギアエクセドラ【まどドラ】
- 中国人、ガチ超正論。「日本人がアイヌに対してやったことを『問題ない』とするなら、中国が日本人に同じことをしても文句ないだろう?」 [314039747]
- 【悲報】新米、全く売れなくて倉庫が満杯になってしまうwwwwwwwwwwwwwwwwwwww [802034645]
- 【画像】中国、ガチで未来感ハンパない変態スマホを発明してしまう
- 【高市悲報】ウクライナ、ガチで敗北か?東部の帰属国民投票にかける可能性-ゼレンスキー [888298477]
- 【画像】サーナイト「お、起きないとチューしちゃうぞ…」ボソ
