Page 394 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼ブランクになるまでループさせたい KUMI 02/11/22(金) 13:14 ┣Re:ブランクになるまでループさせたい Jaka 02/11/22(金) 13:34 ┃ ┣Re:ブランクになるまでループさせたい Jaka 02/11/22(金) 14:37 ┃ ┗Re:ブランクになるまでループさせたい KUMI 02/11/22(金) 15:57 ┃ ┗結果報告、ありがとうございました。 Jaka 02/11/22(金) 17:08 ┃ ┗手抜き部分。 Jaka 02/11/22(金) 17:13 ┗Re:ブランクになるまでループさせたい KUMI 02/11/22(金) 17:48 ┗Re:ブランクになるまでループさせたい Jaka 02/11/25(月) 9:33 ┗Re:ブランクになるまでループさせたい KUMI 02/11/26(火) 11:10 ┗本当にごめんなさい。 Jaka 02/11/26(火) 13:02 ┗Re:本当にごめんなさい。 KUMI 02/11/26(火) 16:39 ─────────────────────────────────────── ■題名 : ブランクになるまでループさせたい ■名前 : KUMI ■日付 : 02/11/22(金) 13:14 -------------------------------------------------------------------------
いつも教えていただいてありがとうございます。 初心者なもので解らないことだらけです。 他の場所にあるCSVのシートの中身で、セルがブランクになるまで データを上から読み込み、現在開いているシートに貼り付けるという 処理を行いたいのです。 ボタンを作成して、そのボタンを押すと、この処理が行われるように します。 下記を作ってみましたが、うまく動きません。 教えてください。 Sub GOgo() Dim RETU As Integer ←列 Dim GYO As Integer ←行 Dim NUM As Integer 列と行 'A行の読み込みとcopyループ Workbooks.Open Filename:= _ "C:\Personal\TEST.csv" RETU = 1 GYO = 1 Do NUM = Cells(RETU, GYO) Cells(RETU, GYO).Select Selection.Copy Windows("AAA.xls").Activate Range("A6").Select ActiveSheet.Paste GYO = GYO + 1 Loop While NUM = "" End Sub |
こんにちは。 質問の回答とは若干違いますが、 ここ試してみてぇ〜! コードが長いけど。 ちゃんと張りついているのか知りたいもので..。 (V3に張り付けた物は、なんかメチャクチャになっていた。) 結果、よろしくね! [#1910] |
こんにちは、テストしてないけどこんな具合になるんじゃ。 (マウスが行かれてるんで、触るとイラついてくるんで、マウスも買ってくれません。) ブック名とシート名は、明確に書いた方が良いです。 Sub GOgo() Dim RETU As Integer '←列 Dim GYO As (Long '←行 'Integerだと32???を超えるとエラーになるから、行の場合Longの方が安全です。 '両方Longでも良いんだけど..。 'A行の読み込みとcopyループ Workbooks.Open FileName:= _ "C:\Personal\TEST.csv" RETU = 1 GYO = 1 Do Workbooks("TEST.csv").Activate Cells(RETU, GYO).Copy Workbooks("AAA.xls").Activate Range("A" & 6 + GYO - 1).Paste GYO = GYO + 1 Loop While Workbooks("TEST.csv").Worksheets("TEST").Cells(RETU, GYO).Value = "" End Sub こっちもテストしてません。すみません。(動いてくれる事を祈ります。) Sub nnl() Dim AEndRow As Long Workbooks.Open FileName:= _ "C:\Personal\TEST.csv" AEndRow Range("A1").End(xlDown).Row Range("A1:A" & AEndRow).Copy Workbooks("AAA.xls").Worksheets("Sheet1").Range("A6") End Sub |
Jaka さん,これ、すごいです!かっこいい〜。 しかし・・・書き込みが少しずれて表示されたのと(A6をしていしたのに、B7から書き込みされた)一行しかでてこなかった(私のCSVは2行あった)です。 あと、終了ボックスのところでエラーになりました。 デバックモードになっちゃいます。 でも使えそうです!何かの時に使わせていただきます! >こんにちは。 > >質問の回答とは若干違いますが、 >ここ試してみてぇ〜! >コードが長いけど。 >ちゃんと張りついているのか知りたいもので..。 >(V3に張り付けた物は、なんかメチャクチャになっていた。) >結果、よろしくね! >[#1910] |
>しかし・・・書き込みが少しずれて表示されたのと(A6をしていしたのに、B7から書き込みされた)一行しかでてこなかった(私のCSVは2行あった)です。 本当ですか! おかしいなぁ? これは、たぶんCSVファイルの改行が、通常と違っているからだと思うんですけど..。 1度CSVファイルをエクセルで開いて、CSV形式で別名保存したもので試して見て下さい。 一応実際に使っているものを載せたんだけど、ごちゃごちゃしてたんで少し消したせいかなぁ? >終了ボックスのところでエラーになりました。 これは、フォームを使っていたのを訂正し忘れた性です。 (フォームを使ったのは、表示位置を指定できるから) 一応訂正として、追加してありますんで、そちらを見てください。 テストしてくれて、どうもありがとうございました。 |
シート枚数計算のところにバグがあります、めんどうなんで直してませんです。 |
Jaka さん、いつもありがとうございます。 行の場合、longですね。勉強になります。 > Range("A" & 6 + GYO - 1).Paste の部分で引っかかり、 「オブジェクトはこのプロパティまたはメソッドをサポートしていません」 というメッセージが出てきます。 nnlの方もやってみました! こちらは、 「sub function propertyが必要です」って出ちゃいます。 ▼KUMI さん: >いつも教えていただいてありがとうございます。 >初心者なもので解らないことだらけです。 > >他の場所にあるCSVのシートの中身で、セルがブランクになるまで >データを上から読み込み、現在開いているシートに貼り付けるという >処理を行いたいのです。 >ボタンを作成して、そのボタンを押すと、この処理が行われるように >します。 > >下記を作ってみましたが、うまく動きません。 >教えてください。 > >Sub GOgo() > >Dim RETU As Integer ←列 >Dim GYO As Integer ←行 >Dim NUM As Integer 列と行 > >'A行の読み込みとcopyループ >Workbooks.Open Filename:= _ > "C:\Personal\TEST.csv" >RETU = 1 >GYO = 1 > >Do > > NUM = Cells(RETU, GYO) > > Cells(RETU, GYO).Select > Selection.Copy > Windows("AAA.xls").Activate > Range("A6").Select > ActiveSheet.Paste > > GYO = GYO + 1 > >Loop While NUM = "" > > >End Sub |
ごめんなさい。 Range("A" & 6 + GYO - 1).Paste ↓ Range("A" & 6 + GYO - 1).PasteSpecial nnlの方 AEndRow = Range("A1").End(xlDown).Row |
Jaka さんありがとうございます。 ??? 何故でしょう。出来ません。 動くことは動くのですが、データが張り付かないのです。 >ごめんなさい。 > >Range("A" & 6 + GYO - 1).Paste > > ↓ > >Range("A" & 6 + GYO - 1).PasteSpecial > > >nnlの方 > >AEndRow = Range("A1").End(xlDown).Row |
普段 Do Loop While 何か使わないと言うより解りづらいので、使ったことが無いため勘違いしてた事。 Cells(RETU, GYO)の間違いに全く気づかず、そのまんま使ってしまったこと。 Cellsの場合、Rangeの書き方と違って、行が最初にきます。 たとえば range("A2") は、 Cells(2,1) になります。 今度は、ちゃんとテストしました。 Sub GOgo() Dim RETU As Integer '←列 Dim GYO As Long '←行 'Integerだと32???を超えるとエラーになるから、行の場合Longの方が安全です。 '両方Longでも良いんだけど..。 'A行の読み込みとcopyループ Workbooks.Open FileName:= _ "C:\Personal\TEST.csv" RETU = 1 GYO = 1 Do Workbooks("TEST.csv").Activate Cells(GYO, RETU).Copy Workbooks("AAA.xls").Activate Range("A" & 6 + GYO - 1).PasteSpecial GYO = GYO + 1 Loop While Workbooks("TEST.csv").Worksheets("TEST").Cells(GYO, RETU).Value <> "" End Sub |
Jaka さん いつもありがとうございます! うまくいきました! Cells と Rangeの違い、勉強になりました! ありがとうございました。 >普段 Do Loop While 何か使わないと言うより解りづらいので、使ったことが無いため勘違いしてた事。 > >Cells(RETU, GYO)の間違いに全く気づかず、そのまんま使ってしまったこと。 >Cellsの場合、Rangeの書き方と違って、行が最初にきます。 >たとえば >range("A2") >は、 >Cells(2,1) >になります。 >今度は、ちゃんとテストしました。 > > >Sub GOgo() > >Dim RETU As Integer '←列 >Dim GYO As Long '←行 >'Integerだと32???を超えるとエラーになるから、行の場合Longの方が安全です。 >'両方Longでも良いんだけど..。 > >'A行の読み込みとcopyループ >Workbooks.Open FileName:= _ > "C:\Personal\TEST.csv" >RETU = 1 >GYO = 1 > >Do > Workbooks("TEST.csv").Activate > Cells(GYO, RETU).Copy > Workbooks("AAA.xls").Activate > Range("A" & 6 + GYO - 1).PasteSpecial > GYO = GYO + 1 >Loop While Workbooks("TEST.csv").Worksheets("TEST").Cells(GYO, RETU).Value <> "" > >End Sub |