探検
Excel VBA 質問スレ Part65
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 3bda-drwQ)
2020/03/17(火) 16:27:20.88ID:hh8LiIgR0ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK
※前スレ
Excel VBA 質問スレ Part64
https://mevius.5ch.net/test/read.cgi/tech/1575297834/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
188デフォルトの名無しさん (オッペケ Sr01-WpTI)
2020/04/06(月) 07:33:50.36ID:c57grIZCr189デフォルトの名無しさん (ワッチョイ 4bcc-bVUD)
2020/04/06(月) 09:41:20.32ID:LXVfU9S30 >>174
最初、自前タイマーでの自動保存を提案しようと思ったけど、全ユーザーの同期とか排他処理とか必要になるからやめた
同時使用数にもよるけど、現状の5分ぐらいが実用限度だと思う
それでも問題があるから、MSも共有ブック機能を非推奨にしたんだろうしね
最初、自前タイマーでの自動保存を提案しようと思ったけど、全ユーザーの同期とか排他処理とか必要になるからやめた
同時使用数にもよるけど、現状の5分ぐらいが実用限度だと思う
それでも問題があるから、MSも共有ブック機能を非推奨にしたんだろうしね
190デフォルトの名無しさん (ワッチョイ e5ad-KN+/)
2020/04/06(月) 15:09:00.57ID:0mGlPNRI0 >>186
まず落ちる原因の特定が必要
本当にデータ量が原因かどうか?
それでもし量の問題だとしたら
同時に必要なデータを見定める
たとえばA、B、Cのファイルを同時に開いてたが
じつはAとB、BとCで処理する工夫の余地があるとか
それでもアルゴリズムではどうにもならない量なら
SQLとかのデータベースに移行する
まず落ちる原因の特定が必要
本当にデータ量が原因かどうか?
それでもし量の問題だとしたら
同時に必要なデータを見定める
たとえばA、B、Cのファイルを同時に開いてたが
じつはAとB、BとCで処理する工夫の余地があるとか
それでもアルゴリズムではどうにもならない量なら
SQLとかのデータベースに移行する
191デフォルトの名無しさん (ワンミングク MMa3-BYLE)
2020/04/06(月) 22:35:08.05ID:sFf9EAmnM https://oshiete.goo.ne.jp/qa/1972570.html
ActiveWorkbook.SaveAsにするとファイル名変えずに保存できる理由を教えてください
Copyした時点で別ブックが作られるんですか?
ActiveWorkbook.SaveAsにするとファイル名変えずに保存できる理由を教えてください
Copyした時点で別ブックが作られるんですか?
192デフォルトの名無しさん (ワッチョイ 233e-g9A3)
2020/04/06(月) 23:45:47.95ID:jDCeOgrg0 マクロで作られた印刷ボタンを押すと両面印刷で出てくるからこれを片面印刷に統一したいんだけどどうしたらいいの?
193デフォルトの名無しさん (ワッチョイ 5dce-bVUD)
2020/04/07(火) 00:23:26.13ID:YDovvV0g0194デフォルトの名無しさん (ワッチョイ 8de6-bVUD)
2020/04/07(火) 00:29:05.68ID:BEkwL8Dn0 プリンタ登録を2つに増やして使い分けるのが簡単。
でもWin95のころはコピーするだけでプリンタ増やせたけど年々難しくなるよね
でもWin95のころはコピーするだけでプリンタ増やせたけど年々難しくなるよね
195デフォルトの名無しさん (ワッチョイ 45ac-tCKN)
2020/04/07(火) 00:35:40.64ID:8SYsQHh80 正直印刷は、機器変更、NW、印刷位置、紙質とかでトラブルが非常に多くなるから、
金、人命とか絶対にVBAで自動化しなければ行けない理由がない限り手動にするようにしたわ
印刷部分だけPDFにして置いておくとか
金、人命とか絶対にVBAで自動化しなければ行けない理由がない限り手動にするようにしたわ
印刷部分だけPDFにして置いておくとか
196デフォルトの名無しさん (ワッチョイ 2ba7-9mb0)
2020/04/07(火) 01:53:49.62ID:qS+8J4U+0 マクロは印刷プロパティを出すところまで。
それ以上はトラブルの原因になるからやめとき
それ以上はトラブルの原因になるからやめとき
197デフォルトの名無しさん (ワッチョイ e5ad-KN+/)
2020/04/07(火) 04:36:48.84ID:hIwtKFus0 そもそも紙にこだわるのが非効率で
電子化するのが本来の理想ではある
電子化するのが本来の理想ではある
198デフォルトの名無しさん (ワッチョイ 233e-g9A3)
2020/04/07(火) 07:13:41.88ID:xwPFl55C0 プリンタのプロパティでプリンタの設定自体を片面印刷にしておくと片面印刷になりますか?
199デフォルトの名無しさん (ワッチョイ 4d8e-jJEW)
2020/04/07(火) 08:07:09.26ID:YQg5kUpF0 そのくらい自分でやって試せよ
200デフォルトの名無しさん (スッップ Sd43-bjOE)
2020/04/07(火) 08:07:32.68ID:FCg3JG5md201デフォルトの名無しさん (ワッチョイ 2342-uUuo)
2020/04/07(火) 09:12:43.26ID:+6IcJjJU0 >>197
そんなの職場や利用目的によりけりだから
そんなの職場や利用目的によりけりだから
202デフォルトの名無しさん (アウアウクー MM81-g9A3)
2020/04/07(火) 12:34:06.90ID:y7/AcPOrM コントロールパネルからプリンタのプロパティで片面印刷に設定したんだけど片面印刷オンリーになりません
どうしたらいいですか?
どうしたらいいですか?
203デフォルトの名無しさん (オッペケ Sr01-tCKN)
2020/04/07(火) 12:42:21.74ID:RfysvMTgr やったこと全部書き出してプリンターメーカーに聞け
204デフォルトの名無しさん (ワッチョイ b501-tb4t)
2020/04/07(火) 15:41:03.55ID:AQdBAJYM0 特定の文字列のみ文字色を変えたいんだけど、
置換を使うと指定した文字列を含むセルに入力されている全ての文字の色が変わってしまう…
現状では数百数千セルある中から文字列を選択して文字色変更を繰り返す、という辛い作業を続けているのですが
この様に、指定した文字列だけの色を変更って出来ませんか?
置換を使うと指定した文字列を含むセルに入力されている全ての文字の色が変わってしまう…
現状では数百数千セルある中から文字列を選択して文字色変更を繰り返す、という辛い作業を続けているのですが
この様に、指定した文字列だけの色を変更って出来ませんか?
205デフォルトの名無しさん (ワッチョイ 9b2f-AHN4)
2020/04/07(火) 17:49:52.17ID:yHbrhPie0 >>204
Sub 特定文字列に色をぬる(検索範囲 As Range, 対象文字列 As String, 色 As Long)
Dim r As Range
For Each r In 検索範囲
Dim s As Long
s = InStr(r.Characters.Text, 対象文字列)
If s > 0 Then
r.Characters(s, Len(対象文字列)).Font.Color = 色
End If
Next
End Sub
Sub 特定文字列に色をぬる(検索範囲 As Range, 対象文字列 As String, 色 As Long)
Dim r As Range
For Each r In 検索範囲
Dim s As Long
s = InStr(r.Characters.Text, 対象文字列)
If s > 0 Then
r.Characters(s, Len(対象文字列)).Font.Color = 色
End If
Next
End Sub
206デフォルトの名無しさん (スッップ Sd43-bjOE)
2020/04/07(火) 19:26:33.02ID:FCg3JG5md207デフォルトの名無しさん (ワッチョイ 23b5-Lkgv)
2020/04/07(火) 19:29:30.91ID:ZYiBkzsm0 何から覚えようVBA
208デフォルトの名無しさん (ワッチョイ 8d7c-5QI3)
2020/04/07(火) 19:42:05.21ID:F7VfxkGZ0 >>198
やってみてどうなった?
やってみてどうなった?
209デフォルトの名無しさん (アウアウウー Sae9-f+0C)
2020/04/07(火) 20:04:27.93ID:4wIwYA/Ra >>207
覚えるのが目的じゃなかろう
覚えるのが目的じゃなかろう
210デフォルトの名無しさん (ワッチョイ 23ad-KBPB)
2020/04/07(火) 20:22:06.26ID:83dL758F0 >>187,190,200
186です。ご回答有難う御座います。
ご指摘を参考に以下の様な形に変更したところ、強制終了する事なく全ファイルの吸い上げが出来ました。お手数をお掛け致しました。
'// ファイル数カウント //
Dim CSVPth As String, CSVNam As String
CSVPth = Dir(CSVDir & "*.csv")
CSVNam = CSVPth
Do While CSVPth <> ""
CSVPth = Dir()
CSVNam = CSVNam & CSVPth
Loop
Dim CSVAry As Variant, CSVCnt As Long
CSVAry = Split(CSVNam, ".csv")
Dim OutAry() As Variant
ReDim OutAry(1 To (UBound(CSVAry) + 1) * 6, 1 To 1)
Dim LinAry As Variant, LinStg As String, LinCnt As Long
'// CSVファイル読込処理 //
For CSVCnt = LBound(CSVAry) To UBound(CSVAry)
If CSVAry(CSVCnt) <> "" And Dir(CSVDir & CSVAry(CSVCnt) & ".csv") <> "" Then
Open CSVDir & CSVAry(CSVCnt) & ".csv" For Input As #CSVCnt + 1
LinCnt = 0
Do While Not EOF(CSVCnt + 1)
Line Input #CSVCnt + 1, LinStg
LinCnt = LinCnt + 1
LinStg = "" & Replace(LinStg, """", "") & ""
LinAry = Split(LinStg, ",")
<-- 処理 -->
ReDim Preserve OutAry(1 To (UBound(CSVAry) + 1) * 6, 1 To WorksheetFunction.Max(UBound(OutAry, 2), LinCnt)
Loop
Close #CSVCnt + 1
End If
Next Range(Sheet2.Range("A1"), Sheet2.Cells(UBound(OutAry, 2), UBound(OutAry, 1))).Value = WorksheetFunction.Transpose(OutAry)
186です。ご回答有難う御座います。
ご指摘を参考に以下の様な形に変更したところ、強制終了する事なく全ファイルの吸い上げが出来ました。お手数をお掛け致しました。
'// ファイル数カウント //
Dim CSVPth As String, CSVNam As String
CSVPth = Dir(CSVDir & "*.csv")
CSVNam = CSVPth
Do While CSVPth <> ""
CSVPth = Dir()
CSVNam = CSVNam & CSVPth
Loop
Dim CSVAry As Variant, CSVCnt As Long
CSVAry = Split(CSVNam, ".csv")
Dim OutAry() As Variant
ReDim OutAry(1 To (UBound(CSVAry) + 1) * 6, 1 To 1)
Dim LinAry As Variant, LinStg As String, LinCnt As Long
'// CSVファイル読込処理 //
For CSVCnt = LBound(CSVAry) To UBound(CSVAry)
If CSVAry(CSVCnt) <> "" And Dir(CSVDir & CSVAry(CSVCnt) & ".csv") <> "" Then
Open CSVDir & CSVAry(CSVCnt) & ".csv" For Input As #CSVCnt + 1
LinCnt = 0
Do While Not EOF(CSVCnt + 1)
Line Input #CSVCnt + 1, LinStg
LinCnt = LinCnt + 1
LinStg = "" & Replace(LinStg, """", "") & ""
LinAry = Split(LinStg, ",")
<-- 処理 -->
ReDim Preserve OutAry(1 To (UBound(CSVAry) + 1) * 6, 1 To WorksheetFunction.Max(UBound(OutAry, 2), LinCnt)
Loop
Close #CSVCnt + 1
End If
Next Range(Sheet2.Range("A1"), Sheet2.Cells(UBound(OutAry, 2), UBound(OutAry, 1))).Value = WorksheetFunction.Transpose(OutAry)
211デフォルトの名無しさん (ワッチョイ 5dce-bVUD)
2020/04/07(火) 21:04:34.54ID:YDovvV0g0 Windows10になってから、アプリごとに印刷設定を覚えるようになってややこしくなった
以前はプリンタのプロパティからデフォルト状態を決め打ちできたのに
以前はプリンタのプロパティからデフォルト状態を決め打ちできたのに
212デフォルトの名無しさん (ワッチョイ 9b2f-AHN4)
2020/04/07(火) 22:46:04.39ID:yHbrhPie0213デフォルトの名無しさん (ワッチョイ e202-slfm)
2020/04/08(水) 03:24:16.94ID:PBw6emZJ0 4文字目から3文字赤に変えたマクロの記録
ActiveCell.Characters(Start:=4, Length:=3).Font.ColorIndex = 3
ActiveCell.Characters(Start:=4, Length:=3).Font.ColorIndex = 3
214デフォルトの名無しさん (ワッチョイ e23e-1Ne1)
2020/04/08(水) 19:41:01.55ID:uS6fz3VF0 まさかシート毎に印刷の画面から片面印刷を選ばなきゃ両面印刷をされるなんて知らなかったわ
215デフォルトの名無しさん (アウアウエー Sa3a-d4/r)
2020/04/08(水) 19:55:07.25ID:o5xrKhXHa プリンター関係の情報はシートごとになってるから。
手動ですべてのシートを両面印刷にする方法はあるけど。
手動ですべてのシートを両面印刷にする方法はあるけど。
216デフォルトの名無しさん (スププ Sd02-bmmP)
2020/04/08(水) 20:05:36.79ID:T31Wtd0td シート全選択してプリンタ設定変更してからやればいい
217デフォルトの名無しさん (アウアウエー Sa3a-d4/r)
2020/04/08(水) 20:16:40.48ID:o5xrKhXHa シート全選択してプリンター設定してもダメなんですよね。
218デフォルトの名無しさん (アウアウウー Sabb-Fqhg)
2020/04/08(水) 20:32:27.07ID:wSF4QqHVa あきらめろん
219デフォルトの名無しさん (スププ Sd02-bmmP)
2020/04/08(水) 20:37:06.75ID:T31Wtd0td >>217
上書き保存してファイルを開き直せ
上書き保存してファイルを開き直せ
220デフォルトの名無しさん (ワッチョイ f71f-nfbJ)
2020/04/08(水) 22:17:54.74ID:Tninom9X0 dwgファイルをどうにかしてEXCELに図形で取り込みたいんだがなんか方法ありません?
家の見取り図みたいなファイルなんだけど。
家の見取り図みたいなファイルなんだけど。
221デフォルトの名無しさん (ワッチョイ 43ce-AglQ)
2020/04/08(水) 23:34:26.41ID:W1XPdmgi0 >>220
DXFに変換
DXFに変換
222デフォルトの名無しさん (ワッチョイ 23da-AglQ)
2020/04/09(木) 03:10:49.06ID:lF+KAcZx0 >>220
後輩にやらせる
後輩にやらせる
223デフォルトの名無しさん (ワッチョイ c6ef-AglQ)
2020/04/09(木) 04:58:57.51ID:yf4TGzZj0 >>220
JacConvert
JacConvert
224デフォルトの名無しさん (オッペケ Sr5f-5Z7F)
2020/04/09(木) 07:53:04.17ID:q52/CIa+r セル右クリックしたら出てくるメニューを禁止に出来ない?
書式設定とかコピーとか貼り付けとかメニュー自体出ないように
書式設定とかコピーとか貼り付けとかメニュー自体出ないように
225デフォルトの名無しさん (スップ Sd22-ELgU)
2020/04/09(木) 07:57:33.92ID:YKVVyHYsd226デフォルトの名無しさん (ワッチョイ b6a7-bmmP)
2020/04/09(木) 08:14:30.62ID:44A41Mtl0 保護かければ?
227デフォルトの名無しさん (オッペケ Sr5f-5Z7F)
2020/04/09(木) 08:18:29.24ID:q52/CIa+r >>226
保護かけると使えなくなる機能があるから無理なんだ
保護かけると使えなくなる機能があるから無理なんだ
228デフォルトの名無しさん (ワッチョイ 06cc-AglQ)
2020/04/09(木) 08:39:31.78ID:K8984GmW0 これは?普通にググったら出てきたぞ
https://www.moug.net/tech/exvba/0150035.html
https://www.moug.net/tech/exvba/0150035.html
229デフォルトの名無しさん (ワッチョイ 2349-q7V1)
2020/04/09(木) 09:20:01.56ID:x5VgstST0 普通にやり方あるぞ
230デフォルトの名無しさん (ササクッテロラ Sp5f-zMEH)
2020/04/09(木) 12:24:02.59ID:wcbpQmosp エクセル2007についてです
セルをクリックすると、カレンダーが表示されて、そのカレンダーの日付をクリックすると、セルに日付が挿入される
という形にしたいのですが、ここで問題があります
一つはAccessがないため、カレンダーコントロールがないのと、もう一つはインターネット接続不可端末のため、どこからかDLするというのができないです
この場合のカレンダーから日付取得をするというのはできないのでしょうか?
セルをクリックすると、カレンダーが表示されて、そのカレンダーの日付をクリックすると、セルに日付が挿入される
という形にしたいのですが、ここで問題があります
一つはAccessがないため、カレンダーコントロールがないのと、もう一つはインターネット接続不可端末のため、どこからかDLするというのができないです
この場合のカレンダーから日付取得をするというのはできないのでしょうか?
231デフォルトの名無しさん (ワッチョイ 43ce-AglQ)
2020/04/09(木) 12:30:31.66ID:8gmsr/Td0232デフォルトの名無しさん (ブーイモ MM5b-qE1F)
2020/04/09(木) 12:31:40.44ID:veSARJt1M カレンダーのシートを作って、そこから選択させるとか
233デフォルトの名無しさん (ササクッテロラ Sp5f-zMEH)
2020/04/09(木) 13:01:14.59ID:wcbpQmosp >>231
早速参考にさせていただきました
ありがとうございます
ただ、これ起動すると、日付クリックした後、テキストボックスに日付挿入になるので
どこかのコードにテキストボックスではなくてセル挿入になるようにしたらいいと思うんですけれど、どこに記述するのがいいですかね?
まだvbaいじり始めた身としてはここまで複雑だといじりづらいというか
早速参考にさせていただきました
ありがとうございます
ただ、これ起動すると、日付クリックした後、テキストボックスに日付挿入になるので
どこかのコードにテキストボックスではなくてセル挿入になるようにしたらいいと思うんですけれど、どこに記述するのがいいですかね?
まだvbaいじり始めた身としてはここまで複雑だといじりづらいというか
234デフォルトの名無しさん (ワッチョイ bb7c-slfm)
2020/04/09(木) 20:27:14.43ID:PvaeZ0Ck0 >>224
BeforeRightClickイベント
BeforeRightClickイベント
235デフォルトの名無しさん (ワッチョイ f71f-nfbJ)
2020/04/09(木) 21:58:32.74ID:TQ3Lwxfd0 >>221
調べるとDXFはTextファイル形式で出来ているみたいでネットで調べながらやってみたけど、重い。まぁ俺の書き方が駄目な気もするけど。線の数が4万とか超えてる。
調べるとDXFはTextファイル形式で出来ているみたいでネットで調べながらやってみたけど、重い。まぁ俺の書き方が駄目な気もするけど。線の数が4万とか超えてる。
236デフォルトの名無しさん (ワッチョイ eb5e-AglQ)
2020/04/09(木) 23:05:01.47ID:vJBq1mcg0 作者不明のファイルを修正しているのですが、そのファイル自身を指定するのにファイル名で
記述してありました。これだと「●●Ver1.0.xlsm」→「●●Ver1.1.xlsm」のようにファイル名を
変える度にコードを修正しなくてはならないためThisWorkBookに変えようかと思っているのですが
その場合なにか弊害とかあるんでしょうか?
記述してありました。これだと「●●Ver1.0.xlsm」→「●●Ver1.1.xlsm」のようにファイル名を
変える度にコードを修正しなくてはならないためThisWorkBookに変えようかと思っているのですが
その場合なにか弊害とかあるんでしょうか?
237デフォルトの名無しさん (ワッチョイ e23e-1Ne1)
2020/04/10(金) 07:51:15.22ID:goOf5Ofq0 シートを全選択したら一括で変更できるのか
238デフォルトの名無しさん (オッペケ Sr5f-vH9a)
2020/04/10(金) 08:26:28.75ID:tq9uLSTsr >>236
弊害は無いよ
弊害は無いよ
239デフォルトの名無しさん (オッペケ Sr5f-q7V1)
2020/04/10(金) 09:37:44.73ID:Rte1PrgOr そのファイル自身だと完全に明確で揺らがないなら、thisworkbookでいんじゃね
240デフォルトの名無しさん (ワッチョイ c6da-AglQ)
2020/04/10(金) 19:23:44.82ID:LG9l2UEQ0 どこから参照されてるのか全部調べないとわからないんじゃないかそれ。
まあThisworkbookを知らないだけの可能性は高いが。
まあThisworkbookを知らないだけの可能性は高いが。
241デフォルトの名無しさん (ワッチョイ eb5e-AglQ)
2020/04/10(金) 19:27:26.52ID:f64Irgef0 >>238,239
ありがとうございます。
今日内容を確認してきましたが、マクロが記述されたブック(A.xlsm)上でシートを作成し、それをコピーして
新規ブック(B.xlsx)を作成してからもう一度A.xlsmの特定のシートをアクティブにする、という処理の中で
A.xlsmのブック名を明示してありました。
今日は時間がなくて試せなかったのですが、この場合でもマクロが記述されたブックはA.xlsmなので
ThisWorkBookで問題ないかなと思ったのですが、それであっていますでしょうか?
ありがとうございます。
今日内容を確認してきましたが、マクロが記述されたブック(A.xlsm)上でシートを作成し、それをコピーして
新規ブック(B.xlsx)を作成してからもう一度A.xlsmの特定のシートをアクティブにする、という処理の中で
A.xlsmのブック名を明示してありました。
今日は時間がなくて試せなかったのですが、この場合でもマクロが記述されたブックはA.xlsmなので
ThisWorkBookで問題ないかなと思ったのですが、それであっていますでしょうか?
242デフォルトの名無しさん (ワッチョイ eb5e-AglQ)
2020/04/10(金) 19:38:53.80ID:f64Irgef0 >>240
ThisWorkBookを知らないというかちゃんと理解していないのはその通りだと思います。
ThisWorkBookの主体がが変わる場合があるということでしょうか?
マクロ実行中にほかのブックに記述されたマクロを利用したりすると変わる、とかですかね?
ThisWorkBookを知らないというかちゃんと理解していないのはその通りだと思います。
ThisWorkBookの主体がが変わる場合があるということでしょうか?
マクロ実行中にほかのブックに記述されたマクロを利用したりすると変わる、とかですかね?
243デフォルトの名無しさん (ワッチョイ 62ad-JJvI)
2020/04/10(金) 20:30:11.90ID:oDKSQVIR0 ThisWorkBookはプログラムが記述されているワークブックを参照せよっていう意味だからブックAを実行中にアクティブがブックBに切り替わったりしてもブックAに記述されたThisWorkBookはブックAを参照する
244デフォルトの名無しさん (ワッチョイ e2b5-G6fV)
2020/04/11(土) 03:52:15.33ID:w8fV8nev0 エクセルテンプレートを開いた状態
↓
フォルダにある1つ目のtxtデータをエクセルテンプレにドラッグしてエクセル化
↓
エクセル化したC1:C8の範囲をコピー
↓
元々開いてあるエクセルのA1:A8に「数値」のみ貼り付け
↓
エクセル化されたデータは閉じて2つ目のtxtをドラッグしてエクセル化
↓
C1:C8の範囲をコピーしてテンプレのB1:B8に「数値」のみコピー
って感じでテンプレに測定機から出したデータをひたすら貼ってるんですが
これを簡単にするVBAとか可能ですか?
人によってはテキストをエクセル化はまとめて5つドラッグしたりして順番に貼ってく人もいます
エクセル化したデータの数値のみコピーしたいセルはC1:C8は固定
テンプレにはABCDと順番に貼って増やしていく
これをなんとかマクロかする案があればご教授お願いします。
↓
フォルダにある1つ目のtxtデータをエクセルテンプレにドラッグしてエクセル化
↓
エクセル化したC1:C8の範囲をコピー
↓
元々開いてあるエクセルのA1:A8に「数値」のみ貼り付け
↓
エクセル化されたデータは閉じて2つ目のtxtをドラッグしてエクセル化
↓
C1:C8の範囲をコピーしてテンプレのB1:B8に「数値」のみコピー
って感じでテンプレに測定機から出したデータをひたすら貼ってるんですが
これを簡単にするVBAとか可能ですか?
人によってはテキストをエクセル化はまとめて5つドラッグしたりして順番に貼ってく人もいます
エクセル化したデータの数値のみコピーしたいセルはC1:C8は固定
テンプレにはABCDと順番に貼って増やしていく
これをなんとかマクロかする案があればご教授お願いします。
245デフォルトの名無しさん (ワッチョイ 4f5f-791I)
2020/04/11(土) 07:25:04.87ID:+FpWMQNh0 可能です。
246デフォルトの名無しさん (ワッチョイ bbe6-CJtn)
2020/04/11(土) 08:08:50.84ID:X9U6v4B00 テンプレート(.xlt .xltx)は何に使うの?
247デフォルトの名無しさん (ワッチョイ e2b5-G6fV)
2020/04/11(土) 10:50:20.33ID:w8fV8nev0248デフォルトの名無しさん (アウアウエー Sa3a-d4/r)
2020/04/11(土) 10:56:04.79ID:DIdffniea >>244
txtデータは、例えばカンマで区切られてるとか、空白で区切られてるとか、決まってるの?
内容的にはVBAがある程度使える人なら難しくないと思うけど、ちょっとネットで聞いて作ろうとかいうのは難しいんじゃないかな。
txtデータは、例えばカンマで区切られてるとか、空白で区切られてるとか、決まってるの?
内容的にはVBAがある程度使える人なら難しくないと思うけど、ちょっとネットで聞いて作ろうとかいうのは難しいんじゃないかな。
249248 (アウアウエー Sa3a-d4/r)
2020/04/11(土) 11:19:08.65ID:DIdffniea txtファイルがどのくらいの数あるのかで、どういう手順が良いか違ってくると思います。
そんなにたくさんないなら、テンプレファイル(◯◯.xlsm )に、ボタンを用意。ボタンを押したらファイルを選択するダイアログが出て、該当のtxtファイルを選択してデータを読み込む。
txtファイルがたくさんあるとこの手順は面倒なので、同一フォルダに入れてなんらかの順番で読み込むようにするとか。
そんなにたくさんないなら、テンプレファイル(◯◯.xlsm )に、ボタンを用意。ボタンを押したらファイルを選択するダイアログが出て、該当のtxtファイルを選択してデータを読み込む。
txtファイルがたくさんあるとこの手順は面倒なので、同一フォルダに入れてなんらかの順番で読み込むようにするとか。
250デフォルトの名無しさん (ブーイモ MM3e-G6fV)
2020/04/11(土) 11:27:54.59ID:YvJJVii7M >>248
そこら辺の知識がなくてとにかくテキストを、開いてるエクセルにドラッグすると決まったセル範囲に例えばC1:C5に欲しいデータが出るのでそれをコピーしてるのが現状です
イメージ的にいつも
https://i.imgur.com/50VhJqS.jpg
テキスト入ったフォルダとエクセルを並べる
↓
https://i.imgur.com/8TiTDap.jpg
ドラッグしてエクセル化
↓
https://i.imgur.com/OrMUP1G.jpg
数値のみコピーしてテンプレに貼り付け
↓
https://i.imgur.com/htHvRLv.jpg
閉じた後、次のテキストをドラッグしてエクセル化
↓
https://i.imgur.com/1F89knY.jpg
テンプレの次の列に貼り付け
これを日によっては70くらいやったりしてます、、
そこら辺の知識がなくてとにかくテキストを、開いてるエクセルにドラッグすると決まったセル範囲に例えばC1:C5に欲しいデータが出るのでそれをコピーしてるのが現状です
イメージ的にいつも
https://i.imgur.com/50VhJqS.jpg
テキスト入ったフォルダとエクセルを並べる
↓
https://i.imgur.com/8TiTDap.jpg
ドラッグしてエクセル化
↓
https://i.imgur.com/OrMUP1G.jpg
数値のみコピーしてテンプレに貼り付け
↓
https://i.imgur.com/htHvRLv.jpg
閉じた後、次のテキストをドラッグしてエクセル化
↓
https://i.imgur.com/1F89knY.jpg
テンプレの次の列に貼り付け
これを日によっては70くらいやったりしてます、、
251デフォルトの名無しさん (ブーイモ MM3e-G6fV)
2020/04/11(土) 11:31:26.34ID:YvJJVii7M >>249
レスありがとです!!!そこです!
日によってデータ数が違って
5つの日もあれば30の日もあれば75の日もあります
ボタン作って該当するデータの数を任意で選べたりできないのかなぁと妄想してます
レスありがとです!!!そこです!
日によってデータ数が違って
5つの日もあれば30の日もあれば75の日もあります
ボタン作って該当するデータの数を任意で選べたりできないのかなぁと妄想してます
252デフォルトの名無しさん (ブーイモ MM3e-G6fV)
2020/04/11(土) 11:41:57.94ID:YvJJVii7M この貼り付けるエクセルはそもそもこんなのでテンプレなの?っていうは一応エクセルの関数で
他の何種類もあるシートに複数の関数で出せる紐付けしてあるので
テンプレというか自分なりのベースのようなものです
本当はその関数すら慣れてる人ならVBAで余裕で組むんだろうなと思うのですがそんな欲ばる資格がまだないのでまずはこの作業を…
他の何種類もあるシートに複数の関数で出せる紐付けしてあるので
テンプレというか自分なりのベースのようなものです
本当はその関数すら慣れてる人ならVBAで余裕で組むんだろうなと思うのですがそんな欲ばる資格がまだないのでまずはこの作業を…
253デフォルトの名無しさん (アウアウエー Sa3a-d4/r)
2020/04/11(土) 11:45:20.84ID:DIdffniea GetOpenFilenameメソッドでダイアログで複数のtxtファイルを選択するか、「転記前フォルダ」とかに対象のtxtファイル入れておいて、フォルダ内をfor eachですべて読み込むか。読み込み済みのtxtは自動で「転記済フォルダ」に入れるか削除。
どちらにしてもtxtファイルの名前順に読み込むようになるだろうから、そこを一工夫する必要があるかも。
どちらにしてもtxtファイルの名前順に読み込むようになるだろうから、そこを一工夫する必要があるかも。
254デフォルトの名無しさん (ワッチョイ 43ce-AglQ)
2020/04/11(土) 12:37:41.59ID:9V4Tv9yv0 >>252
とりあえず、フォルダ内の全テキストを一気に読み込むやつを作った
専用のフォルダに必要なデータだけ入れて、フォルダ名を2行目に書いて
Sub Macro1()
ChDir "c:\tmp"
f = Dir("*.txt")
c = 1
Do While f <> ""
Open f For Input As #1
For r = 1 To 6
Line Input #1, s
Cells(r, c) = Split(s, vbTab)(2)
Next
Close #1
f = Dir
c = c + 1
Loop
End Sub
とりあえず、フォルダ内の全テキストを一気に読み込むやつを作った
専用のフォルダに必要なデータだけ入れて、フォルダ名を2行目に書いて
Sub Macro1()
ChDir "c:\tmp"
f = Dir("*.txt")
c = 1
Do While f <> ""
Open f For Input As #1
For r = 1 To 6
Line Input #1, s
Cells(r, c) = Split(s, vbTab)(2)
Next
Close #1
f = Dir
c = c + 1
Loop
End Sub
255デフォルトの名無しさん (ワッチョイ bb7c-slfm)
2020/04/11(土) 12:48:46.57ID:7ipBnOPU0 >>247
マクロ記録してそれを加工すればいい
マクロ記録してそれを加工すればいい
256デフォルトの名無しさん (ワッチョイ 27aa-G6fV)
2020/04/11(土) 12:55:48.43ID:Zf+aIjAZ0257デフォルトの名無しさん (アウアウウー Sabb-Fqhg)
2020/04/11(土) 18:21:57.90ID:jjkr4EqGa 個人的にはCHDIRと#1ってのが
気になった
気になった
258デフォルトの名無しさん (ワッチョイ 6242-jz5X)
2020/04/11(土) 20:11:07.53ID:Lp6A5Woc0 恋だな
259デフォルトの名無しさん (ワッチョイ 47ac-q7V1)
2020/04/11(土) 20:18:04.56ID:7YQkqL610 6月て
こんなんIT系の仕事じゃなくても普通に1日で理解するやろ。。
多分セルごとに書き込むからファイル数とデータによっては遅くなるな
こんなんIT系の仕事じゃなくても普通に1日で理解するやろ。。
多分セルごとに書き込むからファイル数とデータによっては遅くなるな
260デフォルトの名無しさん (ワッチョイ bb33-HwJg)
2020/04/11(土) 21:02:43.27ID:Mh4soJ8e0 クリップボードに整形したデータ入れてペーストでもいいのよ
タブで右のセル
改行で次の行
タブで右のセル
改行で次の行
261デフォルトの名無しさん (ワッチョイ c28b-KRXG)
2020/04/12(日) 05:51:52.52ID:2Kcsozov0 VBAについて詳しい方に質問です。
現在VBAでオートフィルタの自動プログラムを組んでいます。
そこで質問があります。以下の様なデータがあったとします。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
私の名前は、太郎です。
私の名前は、岩崎です。
あなたの名前は、太郎です。
あなたの名前は、岩崎です。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
検索ワードとしてスペース区切りで「あなた 太郎」と入力された場合
「あなた」と「太郎」を同時に含む行のみをフィルタリングするには
どういう記述を Criteriaにすれば良いのでしょうか?
Criteria1:="*" & [検索ワード] & "*"
現在こんな感じで記述してますがうまく動きません。
AND条件、そしてOR条件で指定する方法を教えてくださいm(_)m
現在VBAでオートフィルタの自動プログラムを組んでいます。
そこで質問があります。以下の様なデータがあったとします。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
私の名前は、太郎です。
私の名前は、岩崎です。
あなたの名前は、太郎です。
あなたの名前は、岩崎です。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
検索ワードとしてスペース区切りで「あなた 太郎」と入力された場合
「あなた」と「太郎」を同時に含む行のみをフィルタリングするには
どういう記述を Criteriaにすれば良いのでしょうか?
Criteria1:="*" & [検索ワード] & "*"
現在こんな感じで記述してますがうまく動きません。
AND条件、そしてOR条件で指定する方法を教えてくださいm(_)m
262デフォルトの名無しさん (ワッチョイ c6da-AglQ)
2020/04/12(日) 08:05:06.29ID:YDpAYAt+0263デフォルトの名無しさん (ワッチョイ bb7c-slfm)
2020/04/12(日) 11:41:12.47ID:QKHzDSq80 >>261
シート上でオートフィルタかける時にできること以外のことはできない
シート上でオートフィルタかける時にできること以外のことはできない
264デフォルトの名無しさん (ワッチョイ bb7c-slfm)
2020/04/12(日) 11:45:08.44ID:QKHzDSq80 どうしてもその記述でやりたいならワードをスペースで分割してから条件2つ指定する
265デフォルトの名無しさん (ワッチョイ c28b-KRXG)
2020/04/12(日) 13:12:18.32ID:2Kcsozov0 ありがとうございます。
アドバンスフィルタとやらを調べてみます。
アドバンスフィルタとやらを調べてみます。
266デフォルトの名無しさん (ワッチョイ 43ce-AglQ)
2020/04/12(日) 13:17:20.10ID:bBYC6g030267デフォルトの名無しさん (ワッチョイ c28b-KRXG)
2020/04/12(日) 13:39:43.30ID:2Kcsozov0 >>266
ありがとうございます!!
ありがとうございます!!
268デフォルトの名無しさん (ワッチョイ 47ac-q7V1)
2020/04/12(日) 17:59:57.23ID:Vvo4XdlE0 いえいえ
269デフォルトの名無しさん (ワッチョイ e2b5-L0r9)
2020/04/13(月) 01:44:02.35ID:sGzWGZEv0270デフォルトの名無しさん (ワッチョイ 4f5f-791I)
2020/04/13(月) 07:29:10.31ID:aaxqX2kx0 >>269
ヒント 変数 r
ヒント 変数 r
271デフォルトの名無しさん (ブーイモ MM5b-qE1F)
2020/04/13(月) 08:13:39.61ID:q00oGNOiM >ヒント
ウザっ
ウザっ
272デフォルトの名無しさん (ワッチョイ 43ce-AglQ)
2020/04/13(月) 11:51:14.39ID:V+m1zN0B0274デフォルトの名無しさん (ワッチョイ 06cc-zfCe)
2020/04/13(月) 13:27:32.03ID:kcz/TGUB0 S列の2行目以降で、0.05以上でかつ、0.98以下の値の行を行ごと削除したいのですが、コードを教えてください
(最終行はA列から取得)
Dim tag As Variant
Dim a As Long
tag = Range("S1:S" & Cells(Rows.Count, 19).End(xlUp).Row).Value
For a = Cells(Rows.Count, 19).End(xlUp).Row To 2 Step -1
If tag(a, 19) <= 0.98 And tag(a, 19) >= 0.05 Then
Rows(a).Delete
End If
Next
(最終行はA列から取得)
Dim tag As Variant
Dim a As Long
tag = Range("S1:S" & Cells(Rows.Count, 19).End(xlUp).Row).Value
For a = Cells(Rows.Count, 19).End(xlUp).Row To 2 Step -1
If tag(a, 19) <= 0.98 And tag(a, 19) >= 0.05 Then
Rows(a).Delete
End If
Next
275デフォルトの名無しさん (ワッチョイ 43ce-AglQ)
2020/04/13(月) 14:19:37.44ID:V+m1zN0B0 >>274
Dim a As Long
For a = Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1
If 0.05 <= Cells(a, 19) And Cells(a, 19) <= 0.98 Then
Rows(a).Delete
End If
Next
Dim a As Long
For a = Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1
If 0.05 <= Cells(a, 19) And Cells(a, 19) <= 0.98 Then
Rows(a).Delete
End If
Next
276デフォルトの名無しさん (ワッチョイ 47ac-q7V1)
2020/04/13(月) 14:20:29.76ID:6KK4qS560 ワークシート機能とか使わないなら、
・その表を全て一気にもにょっと2次元配列(tableA)にいれる(コンマ数秒)
・2次元配列(tableB)を一旦定義
・tableAの各行(イメージね)をforeachする。++カウントする変数をつくる。これはtableBの行数。
・foreachのなかで、tableAのS列がその条件に合致しなければ、tableBに行のそれぞれの要素を代入する(redim preserveしながら)
・できたtableBをどこかにペタッと貼る
Excelぽくやるなら
・オートフィルタする
・2次元配列に一旦もにょっとコピーする(可視セルのみ、CurrentRegionかな)
・シートをクリアするか他のシートにコピーした2次元配列をペタっと貼る
・その表を全て一気にもにょっと2次元配列(tableA)にいれる(コンマ数秒)
・2次元配列(tableB)を一旦定義
・tableAの各行(イメージね)をforeachする。++カウントする変数をつくる。これはtableBの行数。
・foreachのなかで、tableAのS列がその条件に合致しなければ、tableBに行のそれぞれの要素を代入する(redim preserveしながら)
・できたtableBをどこかにペタッと貼る
Excelぽくやるなら
・オートフィルタする
・2次元配列に一旦もにょっとコピーする(可視セルのみ、CurrentRegionかな)
・シートをクリアするか他のシートにコピーした2次元配列をペタっと貼る
277デフォルトの名無しさん (ワッチョイ 47ac-q7V1)
2020/04/13(月) 14:21:50.93ID:6KK4qS560 ちなみに行をforeachしながら行を消すとズレが生じるんじゃね、しらんが
278デフォルトの名無しさん (ブーイモ MM3e-G6fV)
2020/04/13(月) 16:10:06.75ID:7RR5m+brM >>254
色々いじっていますがこれをどう手直ししていいかわからず…
たとえばこれをテキストを変換したときにF2:F13にくるデータを
エクセルにはB5:B16、C5:C16と順番になるよるに出力するようになるにはどう調整すればいいのか、がんばって調べてます
色々いじっていますがこれをどう手直ししていいかわからず…
たとえばこれをテキストを変換したときにF2:F13にくるデータを
エクセルにはB5:B16、C5:C16と順番になるよるに出力するようになるにはどう調整すればいいのか、がんばって調べてます
280デフォルトの名無しさん (ラクッペペ MM8e-CJtn)
2020/04/13(月) 18:33:52.63ID:xh/6KDMeM >>278
ヒント: F1キー
ヒント: F1キー
281デフォルトの名無しさん (ワッチョイ e2b5-G6fV)
2020/04/13(月) 19:37:09.96ID:sGzWGZEv0 Sub テキストから引っ張る()
ChDir "C:\Users\user\Desktop\マクロ勉強" 'フォルダ指定
f = Dir("*.txt")
c = 2 'テンプレの開始する列の変更
Do While f <> ""
Open f For Input As #1 For r = 2 To 13
'テキストの引っ張ってくる行を指定
Line Input #1, s Cells(r, c) = Split(s, vbTab)(2) Next Close #1 f = Dir c = c + 1 Loop End Sub
猿には荷が重すぎるわ
せっかくここで凄いの貰ったのに頭が。
テキストをエクセル化したときのC列をF列に変更しようと思ったらすでにfが存在してて
どこを今度は変えたらいいかわかりません
ChDir "C:\Users\user\Desktop\マクロ勉強" 'フォルダ指定
f = Dir("*.txt")
c = 2 'テンプレの開始する列の変更
Do While f <> ""
Open f For Input As #1 For r = 2 To 13
'テキストの引っ張ってくる行を指定
Line Input #1, s Cells(r, c) = Split(s, vbTab)(2) Next Close #1 f = Dir c = c + 1 Loop End Sub
猿には荷が重すぎるわ
せっかくここで凄いの貰ったのに頭が。
テキストをエクセル化したときのC列をF列に変更しようと思ったらすでにfが存在してて
どこを今度は変えたらいいかわかりません
282デフォルトの名無しさん (ワッチョイ 43ce-AglQ)
2020/04/13(月) 19:44:03.37ID:V+m1zN0B0283デフォルトの名無しさん (ワッチョイ bb7c-slfm)
2020/04/13(月) 19:48:23.00ID:V6BYDDPb0 猿とか以前にそもそも基本知識すら身に付けてないのでは…
284デフォルトの名無しさん (ワッチョイ e2b5-G6fV)
2020/04/13(月) 19:54:15.29ID:sGzWGZEv0 そう、変数なんだというとこまではぎりぎり何とかわかったんです
ただ、引っ張ってくるテキスト側の列をどこで制御してるのかがわからず
>>283
完全にその通り
単純に勉強不足
ネットでかじってばかりじゃダメだと古いけど本も借りました
ただ本当にマジで難しい…
https://i.imgur.com/7Ujyfqa.jpg
ただ、引っ張ってくるテキスト側の列をどこで制御してるのかがわからず
>>283
完全にその通り
単純に勉強不足
ネットでかじってばかりじゃダメだと古いけど本も借りました
ただ本当にマジで難しい…
https://i.imgur.com/7Ujyfqa.jpg
285デフォルトの名無しさん (ワッチョイ 43ce-AglQ)
2020/04/13(月) 19:55:45.77ID:V+m1zN0B0 Sub テキストから引っ張る()
Dim ファイル名 As String
Dim 行 As Integer
Dim 列 As Integer
Dim 配列() As String
Dim 文字列 As String
ChDir "C:\Users\user\Desktop\マクロ勉強" ' フォルダ指定
ファイル名 = Dir("*.txt")
列 = 2 'テンプレの開始する列の変更
Do While ファイル名 <> ""
Open ファイル名 For Input As #1
For 行 = 2 To 13 ' テキストの引っ張ってくる行を指定
Line Input #1, 文字列
配列 = Split(文字列, vbTab)
Cells(行, 列) = 配列(2)
Next
Close #1
ファイル名 = Dir()
列 = 列 + 1
Loop
End Sub
Dim ファイル名 As String
Dim 行 As Integer
Dim 列 As Integer
Dim 配列() As String
Dim 文字列 As String
ChDir "C:\Users\user\Desktop\マクロ勉強" ' フォルダ指定
ファイル名 = Dir("*.txt")
列 = 2 'テンプレの開始する列の変更
Do While ファイル名 <> ""
Open ファイル名 For Input As #1
For 行 = 2 To 13 ' テキストの引っ張ってくる行を指定
Line Input #1, 文字列
配列 = Split(文字列, vbTab)
Cells(行, 列) = 配列(2)
Next
Close #1
ファイル名 = Dir()
列 = 列 + 1
Loop
End Sub
286デフォルトの名無しさん (ワッチョイ e2b5-G6fV)
2020/04/13(月) 19:58:56.72ID:sGzWGZEv0 うお、変数の宣言をあらかじめわかりやすくしてくれて馬鹿な俺を誘導してくれようとする人が!!絶対そんな感じのありがたい人だ!
今から車に乗って帰ったら速攻PC開きます!−−!!
今から車に乗って帰ったら速攻PC開きます!−−!!
287デフォルトの名無しさん (ワッチョイ d7ad-LdNq)
2020/04/13(月) 20:19:57.09ID:Kp4LtUp30■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 国民 居住目的でない住宅所有者に「空室税」課せる法案を提出 [少考さん★]
- 【おこめ】「有能だったんじゃ」おこめ券で批判殺到の鈴木農水大臣…ネットでは前任の“進次郎再評価” ★2 [ぐれ★]
- アメリカ、入国時に「日本人を含む外国人観光客の最大5年分のSNS履歴の提出」義務化へ 過去10年間に使用のメールアドレスや電話番号等も★3 [Hitzeschleier★]
- 「暖房が使えない」「食費が高くて子どもの栄養が…」 物価高に苦しむ子育て世帯、政府に期待する支援は ★2 [蚤の市★]
- バイク事故で入院ゆたぼん、見舞金「1円」振り込みの名義に衝撃「悲しい人ですね」「こういう人がいるから…」 [muffin★]
- オイルマッサージ施術中20代女性にわいせつ行為か セラピストの男(30)を再逮捕 余罪複数とみて警視庁が捜査 [どどん★]
- 来年からPCの価格がガチのマジで超ヤバイ程値上がる模様。お前ら買ったか?Sandy高市 [484676894]
- 【珍報】ガソリン⛽なんか安くね?150円切ってたぞ。高市のおかげか? [699577814]
- TSMC、国内で4nmの先端半導体を製造へwwwwwwwwwww 高市さんいつもありがとう🥺 [784715804]
- 高市内閣の支持率、下落wwwwwwwwwww [834922174]
- 【安倍悲報】めっちゃ癌になる遺伝子を持った男性、精子をドナー提供し197人の子供を作る [884040186]
- PayPayスクラッチチャンスの声やってるけどあの声出なくなった
