Excel VBA 質問スレ Part65

■ このスレッドは過去ログ倉庫に格納されています
2020/03/17(火) 16:27:20.88ID:hh8LiIgR0

ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK

※前スレ
Excel VBA 質問スレ Part64
https://mevius.5ch.net/test/read.cgi/tech/1575297834/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2020/04/07(火) 00:35:40.64ID:8SYsQHh80
正直印刷は、機器変更、NW、印刷位置、紙質とかでトラブルが非常に多くなるから、
金、人命とか絶対にVBAで自動化しなければ行けない理由がない限り手動にするようにしたわ
印刷部分だけPDFにして置いておくとか
2020/04/07(火) 01:53:49.62ID:qS+8J4U+0
マクロは印刷プロパティを出すところまで。
それ以上はトラブルの原因になるからやめとき
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
そのくらい自分でやって試せよ
2020/04/07(火) 08:07:32.68ID:FCg3JG5md
>>186
CSVをWorkbook.Openで開くのが駄目。
OpenステートメントとかFileSystemObject使う方が良い。
2020/04/07(火) 09:12:43.26ID:+6IcJjJU0
>>197
そんなの職場や利用目的によりけりだから
202デフォルトの名無しさん (アウアウクー MM81-g9A3)
垢版 |
2020/04/07(火) 12:34:06.90ID:y7/AcPOrM
コントロールパネルからプリンタのプロパティで片面印刷に設定したんだけど片面印刷オンリーになりません
どうしたらいいですか?
2020/04/07(火) 12:42:21.74ID:RfysvMTgr
やったこと全部書き出してプリンターメーカーに聞け
2020/04/07(火) 15:41:03.55ID:AQdBAJYM0
特定の文字列のみ文字色を変えたいんだけど、
置換を使うと指定した文字列を含むセルに入力されている全ての文字の色が変わってしまう…

現状では数百数千セルある中から文字列を選択して文字色変更を繰り返す、という辛い作業を続けているのですが
この様に、指定した文字列だけの色を変更って出来ませんか?
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
2020/04/07(火) 19:26:33.02ID:FCg3JG5md
>>205
何か少し違う気がする。
rの中で対象文字列が1回しか変わらないんじゃね?

s=instr(s+1,r.Value,対象文字列)でsが0になるまでループかな?
2020/04/07(火) 19:29:30.91ID:ZYiBkzsm0
何から覚えようVBA
2020/04/07(火) 19:42:05.21ID:F7VfxkGZ0
>>198
やってみてどうなった?
2020/04/07(火) 20:04:27.93ID:4wIwYA/Ra
>>207
覚えるのが目的じゃなかろう
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)
2020/04/07(火) 21:04:34.54ID:YDovvV0g0
Windows10になってから、アプリごとに印刷設定を覚えるようになってややこしくなった
以前はプリンタのプロパティからデフォルト状態を決め打ちできたのに
2020/04/07(火) 22:46:04.39ID:yHbrhPie0
>>206
その辺は仕様がはっきりしないから何とも言えんし
そもそも丸投げを受けたつもりはない

s+1だとaaaaaにたいしてaa指定したら5文字全部色変わるけどそれが良いのかどうかわからんだろ
2020/04/08(水) 03:24:16.94ID:PBw6emZJ0
4文字目から3文字赤に変えたマクロの記録
ActiveCell.Characters(Start:=4, Length:=3).Font.ColorIndex = 3
214デフォルトの名無しさん (ワッチョイ e23e-1Ne1)
垢版 |
2020/04/08(水) 19:41:01.55ID:uS6fz3VF0
まさかシート毎に印刷の画面から片面印刷を選ばなきゃ両面印刷をされるなんて知らなかったわ
2020/04/08(水) 19:55:07.25ID:o5xrKhXHa
プリンター関係の情報はシートごとになってるから。
手動ですべてのシートを両面印刷にする方法はあるけど。
2020/04/08(水) 20:05:36.79ID:T31Wtd0td
シート全選択してプリンタ設定変更してからやればいい
2020/04/08(水) 20:16:40.48ID:o5xrKhXHa
シート全選択してプリンター設定してもダメなんですよね。
2020/04/08(水) 20:32:27.07ID:wSF4QqHVa
あきらめろん
2020/04/08(水) 20:37:06.75ID:T31Wtd0td
>>217
上書き保存してファイルを開き直せ
2020/04/08(水) 22:17:54.74ID:Tninom9X0
dwgファイルをどうにかしてEXCELに図形で取り込みたいんだがなんか方法ありません?
家の見取り図みたいなファイルなんだけど。
2020/04/08(水) 23:34:26.41ID:W1XPdmgi0
>>220
DXFに変換
2020/04/09(木) 03:10:49.06ID:lF+KAcZx0
>>220
後輩にやらせる
2020/04/09(木) 04:58:57.51ID:yf4TGzZj0
>>220
JacConvert
2020/04/09(木) 07:53:04.17ID:q52/CIa+r
セル右クリックしたら出てくるメニューを禁止に出来ない?
書式設定とかコピーとか貼り付けとかメニュー自体出ないように
2020/04/09(木) 07:57:33.92ID:YKVVyHYsd
>>224
サブクラスで出来るかどうか。
ここには答えられる程の上級者が居ないと思う。
2020/04/09(木) 08:14:30.62ID:44A41Mtl0
保護かければ?
2020/04/09(木) 08:18:29.24ID:q52/CIa+r
>>226
保護かけると使えなくなる機能があるから無理なんだ
2020/04/09(木) 08:39:31.78ID:K8984GmW0
これは?普通にググったら出てきたぞ
https://www.moug.net/tech/exvba/0150035.html
2020/04/09(木) 09:20:01.56ID:x5VgstST0
普通にやり方あるぞ
2020/04/09(木) 12:24:02.59ID:wcbpQmosp
エクセル2007についてです

セルをクリックすると、カレンダーが表示されて、そのカレンダーの日付をクリックすると、セルに日付が挿入される

という形にしたいのですが、ここで問題があります

一つはAccessがないため、カレンダーコントロールがないのと、もう一つはインターネット接続不可端末のため、どこからかDLするというのができないです

この場合のカレンダーから日付取得をするというのはできないのでしょうか?
2020/04/09(木) 12:30:31.66ID:8gmsr/Td0
>>230
ボタンを横7列、縦6つ並べたカレンダーコントロール的なフォームを自作すればいい
https://ateitexe.com/excel-vba-calendar-control/
2020/04/09(木) 12:31:40.44ID:veSARJt1M
カレンダーのシートを作って、そこから選択させるとか
2020/04/09(木) 13:01:14.59ID:wcbpQmosp
>>231
早速参考にさせていただきました
ありがとうございます

ただ、これ起動すると、日付クリックした後、テキストボックスに日付挿入になるので
どこかのコードにテキストボックスではなくてセル挿入になるようにしたらいいと思うんですけれど、どこに記述するのがいいですかね?

まだvbaいじり始めた身としてはここまで複雑だといじりづらいというか
2020/04/09(木) 20:27:14.43ID:PvaeZ0Ck0
>>224
BeforeRightClickイベント
2020/04/09(木) 21:58:32.74ID:TQ3Lwxfd0
>>221
調べるとDXFはTextファイル形式で出来ているみたいでネットで調べながらやってみたけど、重い。まぁ俺の書き方が駄目な気もするけど。線の数が4万とか超えてる。
2020/04/09(木) 23:05:01.47ID:vJBq1mcg0
作者不明のファイルを修正しているのですが、そのファイル自身を指定するのにファイル名で
記述してありました。これだと「●●Ver1.0.xlsm」→「●●Ver1.1.xlsm」のようにファイル名を
変える度にコードを修正しなくてはならないためThisWorkBookに変えようかと思っているのですが
その場合なにか弊害とかあるんでしょうか?
237デフォルトの名無しさん (ワッチョイ e23e-1Ne1)
垢版 |
2020/04/10(金) 07:51:15.22ID:goOf5Ofq0
シートを全選択したら一括で変更できるのか
2020/04/10(金) 08:26:28.75ID:tq9uLSTsr
>>236
弊害は無いよ
2020/04/10(金) 09:37:44.73ID:Rte1PrgOr
そのファイル自身だと完全に明確で揺らがないなら、thisworkbookでいんじゃね
2020/04/10(金) 19:23:44.82ID:LG9l2UEQ0
どこから参照されてるのか全部調べないとわからないんじゃないかそれ。
まあThisworkbookを知らないだけの可能性は高いが。
2020/04/10(金) 19:27:26.52ID:f64Irgef0
>>238,239
ありがとうございます。

今日内容を確認してきましたが、マクロが記述されたブック(A.xlsm)上でシートを作成し、それをコピーして
新規ブック(B.xlsx)を作成してからもう一度A.xlsmの特定のシートをアクティブにする、という処理の中で
A.xlsmのブック名を明示してありました。

今日は時間がなくて試せなかったのですが、この場合でもマクロが記述されたブックはA.xlsmなので
ThisWorkBookで問題ないかなと思ったのですが、それであっていますでしょうか?
2020/04/10(金) 19:38:53.80ID:f64Irgef0
>>240
ThisWorkBookを知らないというかちゃんと理解していないのはその通りだと思います。
ThisWorkBookの主体がが変わる場合があるということでしょうか?
マクロ実行中にほかのブックに記述されたマクロを利用したりすると変わる、とかですかね?
2020/04/10(金) 20:30:11.90ID:oDKSQVIR0
ThisWorkBookはプログラムが記述されているワークブックを参照せよっていう意味だからブックAを実行中にアクティブがブックBに切り替わったりしてもブックAに記述されたThisWorkBookはブックAを参照する
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と順番に貼って増やしていく

これをなんとかマクロかする案があればご教授お願いします。
2020/04/11(土) 07:25:04.87ID:+FpWMQNh0
可能です。
2020/04/11(土) 08:08:50.84ID:X9U6v4B00
テンプレート(.xlt .xltx)は何に使うの?
2020/04/11(土) 10:50:20.33ID:w8fV8nev0
>>245
その一言でも希望があってありがたい
どういう流れで作ったらいいか何か構想のヒントなどあればいただきたいです

・テンプレのエクセルにボタン設置
・テンプレ開くと同時にユーザーフォーム開くようにしてテキスト選択できるようにするのか
・そもそもVBAがまだ人間になれてない猿並のスキル


>>246
テンプレは.xlsxです、普通のエクセルの
2020/04/11(土) 10:56:04.79ID:DIdffniea
>>244
txtデータは、例えばカンマで区切られてるとか、空白で区切られてるとか、決まってるの?
内容的にはVBAがある程度使える人なら難しくないと思うけど、ちょっとネットで聞いて作ろうとかいうのは難しいんじゃないかな。
2020/04/11(土) 11:19:08.65ID:DIdffniea
txtファイルがどのくらいの数あるのかで、どういう手順が良いか違ってくると思います。

そんなにたくさんないなら、テンプレファイル(◯◯.xlsm )に、ボタンを用意。ボタンを押したらファイルを選択するダイアログが出て、該当のtxtファイルを選択してデータを読み込む。

txtファイルがたくさんあるとこの手順は面倒なので、同一フォルダに入れてなんらかの順番で読み込むようにするとか。
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くらいやったりしてます、、
2020/04/11(土) 11:31:26.34ID:YvJJVii7M
>>249
レスありがとです!!!そこです!
日によってデータ数が違って
5つの日もあれば30の日もあれば75の日もあります
ボタン作って該当するデータの数を任意で選べたりできないのかなぁと妄想してます
2020/04/11(土) 11:41:57.94ID:YvJJVii7M
この貼り付けるエクセルはそもそもこんなのでテンプレなの?っていうは一応エクセルの関数で
他の何種類もあるシートに複数の関数で出せる紐付けしてあるので
テンプレというか自分なりのベースのようなものです

本当はその関数すら慣れてる人ならVBAで余裕で組むんだろうなと思うのですがそんな欲ばる資格がまだないのでまずはこの作業を…
2020/04/11(土) 11:45:20.84ID:DIdffniea
GetOpenFilenameメソッドでダイアログで複数のtxtファイルを選択するか、「転記前フォルダ」とかに対象のtxtファイル入れておいて、フォルダ内をfor eachですべて読み込むか。読み込み済みのtxtは自動で「転記済フォルダ」に入れるか削除。
どちらにしてもtxtファイルの名前順に読み込むようになるだろうから、そこを一工夫する必要があるかも。
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
2020/04/11(土) 12:48:46.57ID:7ipBnOPU0
>>247
マクロ記録してそれを加工すればいい
2020/04/11(土) 12:55:48.43ID:Zf+aIjAZ0
>>254
うおおおお
マジでありがとうございます!
いま外出中なので帰ったら速攻でVBE開いて取りかかります!!
他のこんな猿にアドバイスくれる人達に感謝のみ
批判されて当然のスキルしかないのでそういう覚悟もして相談させてもらってます

6月くらいまでには形にして自分もある程度
コードのルールや流れを猛勉強します

>>255
それも頑張ります、まず加工する知能を身につけます
2020/04/11(土) 18:21:57.90ID:jjkr4EqGa
個人的にはCHDIRと#1ってのが
気になった
2020/04/11(土) 20:11:07.53ID:Lp6A5Woc0
恋だな
2020/04/11(土) 20:18:04.56ID:7YQkqL610
6月て
こんなんIT系の仕事じゃなくても普通に1日で理解するやろ。。

多分セルごとに書き込むからファイル数とデータによっては遅くなるな
2020/04/11(土) 21:02:43.27ID:Mh4soJ8e0
クリップボードに整形したデータ入れてペーストでもいいのよ
タブで右のセル
改行で次の行
2020/04/12(日) 05:51:52.52ID:2Kcsozov0
VBAについて詳しい方に質問です。
現在VBAでオートフィルタの自動プログラムを組んでいます。
そこで質問があります。以下の様なデータがあったとします。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
私の名前は、太郎です。
私の名前は、岩崎です。
あなたの名前は、太郎です。
あなたの名前は、岩崎です。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
検索ワードとしてスペース区切りで「あなた 太郎」と入力された場合
「あなた」と「太郎」を同時に含む行のみをフィルタリングするには
どういう記述を Criteriaにすれば良いのでしょうか?

Criteria1:="*" & [検索ワード] & "*"

現在こんな感じで記述してますがうまく動きません。
AND条件、そしてOR条件で指定する方法を教えてくださいm(_)m
2020/04/12(日) 08:05:06.29ID:YDpAYAt+0
>>261
それやるならオートフィルタじゃない。
アドバンスフィルタ。
2020/04/12(日) 11:41:12.47ID:QKHzDSq80
>>261
シート上でオートフィルタかける時にできること以外のことはできない
2020/04/12(日) 11:45:08.44ID:QKHzDSq80
どうしてもその記述でやりたいならワードをスペースで分割してから条件2つ指定する
2020/04/12(日) 13:12:18.32ID:2Kcsozov0
ありがとうございます。
アドバンスフィルタとやらを調べてみます。
2020/04/12(日) 13:17:20.10ID:bBYC6g030
>>261
And条件の場合はこう書く
Criteria1:="=*あなた*", Operator:=xlAnd, Criteria2:="=*太郎*"
2020/04/12(日) 13:39:43.30ID:2Kcsozov0
>>266
ありがとうございます!!
2020/04/12(日) 17:59:57.23ID:Vvo4XdlE0
いえいえ
2020/04/13(月) 01:44:02.35ID:sGzWGZEv0
>>254
これを、やってみたけどcellsのところでエラーがでます、うーん
頑張ります
2020/04/13(月) 07:29:10.31ID:aaxqX2kx0
>>269
ヒント 変数 r
2020/04/13(月) 08:13:39.61ID:q00oGNOiM
>ヒント
ウザっ
2020/04/13(月) 11:51:14.39ID:V+m1zN0B0
>>269
それはたぶん、txtファイルの中身が想定外
例えば5行以下しかないか、C列にデータが入ってないか
2020/04/13(月) 12:54:16.85ID:RFtb5de7M
>>269
すまん。変数 r はforで回ってた。
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
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
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次元配列をペタっと貼る
2020/04/13(月) 14:21:50.93ID:6KK4qS560
ちなみに行をforeachしながら行を消すとズレが生じるんじゃね、しらんが
2020/04/13(月) 16:10:06.75ID:7RR5m+brM
>>254
色々いじっていますがこれをどう手直ししていいかわからず…

たとえばこれをテキストを変換したときにF2:F13にくるデータを
エクセルにはB5:B16、C5:C16と順番になるよるに出力するようになるにはどう調整すればいいのか、がんばって調べてます
2020/04/13(月) 16:10:57.06ID:kcz/TGUB0
>>275
ありがとうございます。
2020/04/13(月) 18:33:52.63ID:xh/6KDMeM
>>278
ヒント: F1キー
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が存在してて
どこを今度は変えたらいいかわかりません
2020/04/13(月) 19:44:03.37ID:V+m1zN0B0
>>281
cとかfは変数だよ
ワークシートの列じゃない
2020/04/13(月) 19:48:23.00ID:V6BYDDPb0
猿とか以前にそもそも基本知識すら身に付けてないのでは…
2020/04/13(月) 19:54:15.29ID:sGzWGZEv0
そう、変数なんだというとこまではぎりぎり何とかわかったんです
ただ、引っ張ってくるテキスト側の列をどこで制御してるのかがわからず
>>283
完全にその通り
単純に勉強不足
ネットでかじってばかりじゃダメだと古いけど本も借りました
ただ本当にマジで難しい…

https://i.imgur.com/7Ujyfqa.jpg
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
2020/04/13(月) 19:58:56.72ID:sGzWGZEv0
うお、変数の宣言をあらかじめわかりやすくしてくれて馬鹿な俺を誘導してくれようとする人が!!絶対そんな感じのありがたい人だ!
今から車に乗って帰ったら速攻PC開きます!−−!!
2020/04/13(月) 20:19:57.09ID:Kp4LtUp30
>>281
>>284
まずVBAの入門書を読んで基礎知識を
整理するといい(するみたいだけど)

あと「テキストから引っ張る」っていう言葉が曖昧
「テキストファイルを読み込む」「セルに展開する」
みたいに仕様を適切な言葉で把握しておくだけで
ネットで検索すればすぐサンプルコードが引っかかる

本当はなるべく「f」も「file」とか具体的に
命名した方が分かりやすくていいと思うけど
(ファイル用変数とセルの列を混同した一因だろうし)
まず日本語のレベルで言葉を整理しよう
2020/04/13(月) 22:05:23.75ID:sGzWGZEv0
>>287
全くその通りです。

とりあえず
ほぼ意味わからないまま上の人達のおかげで自分の今の業務が10倍以上余裕で速くなるであろうマクロボタンをベースになるxlsmのシートに一つ登録したらたった今完成してしまいました…
隣のシートの正式フォームに数値のみコピーするのだけはマクロで追加しました


Sub テキストファイルをベースに読み込む() ChDir "C:\Users\ikuzo\Desktop\測定データ"
'フォルダ指定
FILE = Dir("*.txt")
c = 2
'ベースの開始する列の変更
Do While FILE <> ""
Open FILE For Input As #1 For r = 2 To 13
'セルに展開する行を指定
Line Input #1, s Cells(r, c) = Split(s, vbTab)(5) Next Close #1
FILE = Dir
c = c + 1
Loop
Range("B2:L13").Select Selection.Copy Sheets("測定結果報告書").Select Range("D5:N16").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False
End Sub

何度やっても一瞬で完璧に処理が終わる…
だがさっぱり意味がわからん、、
本読みます。。
2020/04/13(月) 22:52:20.74ID:sGzWGZEv0
ああ、ダメだ。'でメモりまくったけど
出力する側のエクセルシートの列の指定はわかったけど行の指定がわからなかった。勉強ですね。。
みなさんありがとうございました。
2020/04/13(月) 23:09:41.81ID:nLvmNP810
ちらっちらっ
2020/04/13(月) 23:14:07.84ID:sGzWGZEv0
ごめん、ダメだ。助けてください。
混乱しまくってます。全然違った
読み込むテキスト側の行指定がわからない、、
ベースの方にテキスト2行目8行目からを指示、
とかそれをしないと会社で対応できないです…
2020/04/13(月) 23:21:22.07ID:V6BYDDPb0
そりゃ変数すら知らない知識レベルならこんな短時間じゃなんもできんだろう…
2020/04/13(月) 23:39:16.20ID:sGzWGZEv0
先輩曰くとりあえずわからなくても1つ何か作ってそっから覚えていけと言われ…

Sub 指定フォルダの全テキスト絞り読み込み() ChDir "C:\Users\user\Desktop\測定機データ" 'フォルダ指定
FILE = Dir("*.txt") retu = 2
'ベース列決定でAは1から
Do While FILE <> ""
Open FILE For Input As #1
For Tekist = 3 To 12
'ベース任意行決めでテキストは1行目から
Line Input #1, s
Cells(Tekist, retu) = Split(s, vbTab)(5)
'テキスト初列を()で決めるがAは0から
Next
Close #1
FILE = Dir retu = retu + 1
'この数だけ列飛ばしにベースに読み込む
Loop
End Sub

'テキストを任意の行から読むのが課題4月13日

毎日勉強しないとなぁ。ほんと
2020/04/13(月) 23:57:52.26ID:k2GojJ+U0
PDFファイル(画像)をEXCELに貼り付ける際の画像の素の大きさってどうやって取得できます?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況