Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


116 / 3841 ページ ←次へ | 前へ→

【80148】Re:Excel vbaのコードをVBSに変換
お礼  HY  - 18/9/11(火) 19:54 -

引用なし
パスワード
   ▼よろずや さん:
>ht tp://zukunasiblog.blog.fc2.com/blog-entry-15.html

私の理解力では上手くいきませんでしたが、WSHの環境をcscript 32bit
にしないといけないのは間違いない事がいろいろ調べて確認できました。
この度は、誠に有難うございました。
・ツリー全体表示

【80147】Re:別のシートから別のシートへ
発言  γ  - 18/9/11(火) 19:01 -

引用なし
パスワード
   ステップ実行して確認することをお勧めする。
わたしも実行してみたが問題なかった。
データの関係かと思います。
自分で確認するより他に道はないです。
・ツリー全体表示

【80146】Re:Excel vbaのコードをVBSに変換
回答  よろずや  - 18/9/11(火) 11:09 -

引用なし
パスワード
   ht tp://zukunasiblog.blog.fc2.com/blog-entry-15.html
・ツリー全体表示

【80145】Re:Excel vbaのコードをVBSに変換
質問  HY  - 18/9/11(火) 10:20 -

引用なし
パスワード
   ▼よろずや さん:
>>私の環境は、Win10、Office2003です。
>
>元のソースの出どころは?

私が、昨夜作ったコードです。ネット等見て見様見真似で作りました。


>どういう環境で動いていたのでしょう?

私のExcel 2003 VBAで実装成功しましたので、VBScriptに改変できないか試行錯誤していました。

>Win 10 は 64ビットですよね。
>Provider: Microsoft.ACE.OLEDB.12.0;
>にするといけるかも。
>あるいは、cscript を32ビット版にするとか。

接続文字列がOffice2007以降の物ですので、無理でした。
>
>いずれにしても、Win10、Office2003 の組み合わせが問題ですね。

Excelのインスタンス生成までは動いていたので、ADOも行けるものかと思っていました。VBScriptでADOに関しては、私の環境では通常、accdbファイルに接続以外不可という認識でよろしいでしょうか?Win10、Office2003 の組み合わせが問題これに尽きるかどうか、ここに関してのご返答を再度頂けましたら幸いです。
よろしくお願いいたします。
・ツリー全体表示

【80144】Re:別のシートから別のシートへ
発言  まくろ  - 18/9/11(火) 9:49 -

引用なし
パスワード
   ▼γ さん:
>Range("B3").SpecialCells(xlCellTypeBlanks) = 0
>はどういう意図でしょうか?

間違えました
Range("B1:E31").SpecialCells(xlCellTypeBlanks) = 0
です。

一致しなかったブランクのところに0が入るようにしています。
なくても別に大丈夫です。
・ツリー全体表示

【80143】Re:Excel vbaのコードをVBSに変換
発言  よろずや  - 18/9/11(火) 9:02 -

引用なし
パスワード
   >私の環境は、Win10、Office2003です。

元のソースの出どころは?
どういう環境で動いていたのでしょう?
Win 10 は 64ビットですよね。
Provider: Microsoft.ACE.OLEDB.12.0;
にするといけるかも。
あるいは、cscript を32ビット版にするとか。

いずれにしても、Win10、Office2003 の組み合わせが問題ですね。
・ツリー全体表示

【80142】Re:Excel vbaのコードをVBSに変換
質問  HY  - 18/9/11(火) 8:35 -

引用なし
パスワード
   よろずや様、早速のご返答ありがとうございます。


Dim mya
Dim myb
Dim myc
Dim myd
Set mya = CreateObject("ADODB.Connection")
myb = "MDBファイルのフルパス"
With CreateObject("Excel.Application")
  Set myc = .Workbooks.Open("xlsファイルフルパス").ActiveSheet.Range("A15")
  .Visible = True
End With
With mya
  .Provider = "Microsoft.Jet.OLEDB.4.0;"
  .ConnectionString = "data source=" & myb
  .Open
  Set myd = .Execute("クエリ")
  myc.CopyFromRecordset myd
  Set mya = Nothing
  Set myd = Nothing
End With

 上記は私も試していたのですが、"14行文字2、プロバイダーがみつかりません。正しくインストールされていないかもしれません。、ソースADODB.Connection"というエラーがでてしまいます。
お手数ですが、解決策をご教授できませんでしょうか?
私の環境は、Win10、Office2003です。
よろしくお願いいたします。
・ツリー全体表示

【80141】Re:Excel vbaのコードをVBSに変換
回答  よろずや  - 18/9/10(月) 23:33 -

引用なし
パスワード
   環境が違うので試してませんが...

Dim mya
Dim myb
Dim myc
Dim myd
Set mya = CreateObject("ADODB.Connection")
myb = "MDBファイルのフルパス"
With CreateObject("Excel.Application")
  Set myc = .Workbooks.Open("xlsファイルフルパス").ActiveSheet.Range("A15")
  .Visible = True
End With
With mya
  .Provider = "Provider=Microsoft.Jet.OLEDB.4.0;"
  .ConnectionString = "data source=" & myb
  .Open
  Set myd = .Execute("クエリ")
  myc.CopyFromRecordset myd
  Set mya = nothing
  Set myd = nothing
End With
・ツリー全体表示

【80140】Excel vbaのコードをVBSに変換
質問  HY  - 18/9/10(月) 22:45 -

引用なし
パスワード
   下のコードをVBSに変換したいのですが、ADOの接続の所でエラーが出てしまいます。excelにクエリの結果を表示するコードです。
Createobject関数、変数の型宣言ができない、WSHに依存等の事しかVBSに関してはわかりません。
Dim mya As ADODB.Connection
Dim myb As String
Dim myc As Excel.Range
Dim myd As ADODB.Recordset

Set mya = New ADODB.Connection

myb = "MDBファイルのフルパス"
With New Excel.Application
  Set myc = .Workbooks.Open("xlsファイルフルパス").ActiveSheet.Range("a15")
 
  .Visible = True
End With

With mya
.Provider = "microsoft.jet.oledb.4.0"
.ConnectionString = "data source=" & myb
.Open
Set myd = .Execute("クエリ")
myc.CopyFromRecordset myd
mya=nothing
myd=nothing


End With

この様な処に聞くのが初めてですので、不慣れな点はあるとは思いますが、
ご教授お願いいたします。
よろしくお願いいたします。
・ツリー全体表示

【80139】Re:別のシートから別のシートへ
回答  γ  - 18/9/10(月) 21:40 -

引用なし
パスワード
   Range("B3").SpecialCells(xlCellTypeBlanks) = 0
はどういう意図でしょうか?
・ツリー全体表示

【80138】別のシートから別のシートへ
質問  まくろ  - 18/9/10(月) 11:42 -

引用なし
パスワード
   シート1へシート2のデータを日付を照合してデータを自動コピーする
マクロを作りました。
何故か昨日の日付と今日の日付がデータが入らないのですが何故でしょうか?
いつ行っても一昨日やほかの日のデータは入ります。
VBA初心者です。よろしくお願いします。

[sheet1]
A列に1行目から2018/4/1〜2018/9/31のように日付が書いてあります。
B列以降は空欄です。
[sheet2]
A列に1行目に2018/9/10など日付があります。
B列以降のデータをコピーしたいです。

9/8のデータは反映されるのですが、9/9や9/10は0が入ってしまいます。


Sub ()

Dim c As Range
Dim myRow As Long
Dim myrow2 As Long


Sheets("Sheet1").Activate
With Sheets("Sheet2")
myRow = .Cells(Rows.Count, 1).End(xlUp).Row
For Each c In .Range("A1:A" & myRow)
If WorksheetFunction.CountIf(Columns(1), c) Then
myrow2 = WorksheetFunction.Match(c, Columns(1), 0)
Cells(myrow2, 1).Resize(, 50).Value = c.Offset(, 0).Resize(, 50).Value
End If
Next c
End With
Range("B3").SpecialCells(xlCellTypeBlanks) = 0


End Sub
・ツリー全体表示

【80137】Re:条件分岐の使い方
お礼  ノンボ E-MAIL  - 18/9/1(土) 11:37 -

引用なし
パスワード
   ▼マナ さん:
>▼ノンボ さん:
>
>問題がでるかどうかはデータによると思います。
>空白がB2だけで、単に2行目を上に詰めたい(行削除せずに)
>ということであれば
>
>1)B2が空白でないなら終了
>2)A3;C10をコピーし、A2に貼付け
>3)A10;C10の値をクリア
>
>でもよいのではと思います。
 マナさん

 何度もありがとうございました。
 Exitsubを使って、うまくいきそうなきがします。または、コピーペーストで
 なんとかなるかもしれません。いろいろ試してみます。いろいろご教授していた だきありがとうございました。もっと勉強します。データをもう一度確認して
 みます。
 大変ありがとうございました。
・ツリー全体表示

【80136】Re:条件分岐の使い方
発言  マナ  - 18/9/1(土) 11:23 -

引用なし
パスワード
   ▼ノンボ さん:

問題がでるかどうかはデータによると思います。
空白がB2だけで、単に2行目を上に詰めたい(行削除せずに)
ということであれば

1)B2が空白でないなら終了
2)A3;C10をコピーし、A2に貼付け
3)A10;C10の値をクリア

でもよいのではと思います。
・ツリー全体表示

【80135】Re:条件分岐の使い方
発言  ノンボ E-MAIL  - 18/9/1(土) 11:10 -

引用なし
パスワード
   ▼マナ さん:
>▼ノンボ さん:
>。
>> 条件1は、Bセルが空白の場合は、現在のコードで問題ありません。
>> 条件2、Bセルが空白でない場合が、3行目いかが消えてしまします。Bセルが空 白でない場合は、そのまま削除にならずにしたいです
>
>ごめんなさい。まだわかりません。
>
>条件1について問題ないということは、
>「Bセル」というのは「B2セル」の意味でよいですか。
>
> 
>もしそうなら、↓の理解で間違いないでしょうか。
>
>>条件1;B2セルが空白の場合3行目以下をぜんたいに上につめる
>>条件2;B2セルが空白でない場合は何もしない
>>
>>で、条件1は、現在のコードで問題ない
>
>
>この場合、最初にコードを1行追加し
>B2セルが空白ならExit subで終了するようにすればよいです。
>
>'---------
>
>それとも、「Bセル」は「B列のセル」という意味でしょうか
>その場合は、iとjが同じ場合は値をクリアしなければよいです。
>
>でも、結合セルがあのに、本当に出来ているのでしょうか?
>
マナさん
 なんどもありがとうございます。
 Bセルは、B2セルです。すみません。
 マナさんが言われるコードを書いてみました。
 Sub Test()
  Dim i As Integer, j As Integer
  If Range("b2") = "" Then
     Exit Sub
  End If
  j = 1
  For i = 2 To 10
    If (Range("B" & i).Rows <> "") Then
      j = j + 1
      Rows(i).Copy Rows(j)
      Rows(i) = ""
    End If
  Next i
End Sub
 
 間違えがあるとおもいますが、ご教授ください。
 何度も申し訳ありません。

>
>
・ツリー全体表示

【80134】Re:条件分岐の使い方
発言  マナ  - 18/9/1(土) 10:51 -

引用なし
パスワード
   ▼ノンボ さん:

> 条件1は、Bセルが空白の場合は、現在のコードで問題ありません。
> 条件2、Bセルが空白でない場合が、3行目いかが消えてしまします。Bセルが空 白でない場合は、そのまま削除にならずにしたいです

ごめんなさい。まだわかりません。

条件1について問題ないということは、
「Bセル」というのは「B2セル」の意味でよいですか。

 
もしそうなら、↓の理解で間違いないでしょうか。

>条件1;B2セルが空白の場合3行目以下をぜんたいに上につめる
>条件2;B2セルが空白でない場合は何もしない
>
>で、条件1は、現在のコードで問題ない


この場合、最初にコードを1行追加し
B2セルが空白ならExit subで終了するようにすればよいです。

'---------

それとも、「Bセル」は「B列のセル」という意味でしょうか
その場合は、iとjが同じ場合は値をクリアしなければよいです。

でも、結合セルがあのに、本当に出来ているのでしょうか?


 
・ツリー全体表示

【80133】Re:条件分岐の使い方
お礼  ノンボ E-MAIL  - 18/9/1(土) 10:00 -

引用なし
パスワード
   ▼ねこの手 さん:
>▼ノンボ さん:
>>マナさん
>> 返信ありがとうございます。
>> 行全体でも削除してしまうとまずいです。罫線や一部セルが結合しております。
>
>横やり失礼します。
>
>結合してあるセルががあって、A,B,C列以外にもデータがあり、それらも同じように
>移動させないといけないってことですよね?
>
>一度、レイアウトを提示したほうが適切なアドバイスがもらえると思います。
 ねこの手さん:
 返信ありがとうございます。
 レイアウト全体、C列以下はないです。
 ご教授いただけましたら、お願いします。
・ツリー全体表示

【80132】Re:条件分岐の使い方
発言  ノンボ E-MAIL  - 18/9/1(土) 9:53 -

引用なし
パスワード
   ▼マナ さん:
>▼ノンボ さん:
>
>ますます何をしようとしているかわからなくなりました
>
>なので確認です。
>条件1;B2セルが空白の場合3行目以下をぜんたいに上につめる
>条件2;B2セルが空白でない場合は何もしない
>
>で、条件1は、現在のコードで問題ない
>
>ということで間違いないですか?
>条件2を追加するだけでよいなら簡単ですが…
>
マナさん
 返信ありがとうございます。
 わかりずらくて申し訳ありません。
 条件1は、Bセルが空白の場合は、現在のコードで問題ありません。
 条件2、Bセルが空白でない場合が、3行目いかが消えてしまします。Bセルが空 白でない場合は、そのまま削除にならずにしたいです。条件2を追加するコード をご教授いただければと思います。
 
>
・ツリー全体表示

【80131】Re:条件分岐の使い方
発言  ねこの手  - 18/9/1(土) 8:54 -

引用なし
パスワード
   ▼ノンボ さん:
>マナさん
> 返信ありがとうございます。
> 行全体でも削除してしまうとまずいです。罫線や一部セルが結合しております。

横やり失礼します。

結合してあるセルががあって、A,B,C列以外にもデータがあり、それらも同じように
移動させないといけないってことですよね?

一度、レイアウトを提示したほうが適切なアドバイスがもらえると思います。
・ツリー全体表示

【80130】Re:条件分岐の使い方
発言  マナ  - 18/9/1(土) 8:53 -

引用なし
パスワード
   ▼ノンボ さん:

ますます何をしようとしているかわからなくなりました

なので確認です。
条件1;B2セルが空白の場合3行目以下をぜんたいに上につめる
条件2;B2セルが空白でない場合は何もしない

で、条件1は、現在のコードで問題ない

ということで間違いないですか?
条件2を追加するだけでよいなら簡単ですが…

 
  
・ツリー全体表示

【80129】Re:条件分岐の使い方
発言  ノンボ E-MAIL  - 18/9/1(土) 7:13 -

引用なし
パスワード
   ▼マナ さん:
>▼ノンボ さん:
>
>>セルを削除しますとフォーマットがくずれてしまいうまくありません。
>
>行全体を削除ですが、それでもだめなのですか?

マナさん
 返信ありがとうございます。
 行全体でも削除してしまうとまずいです。罫線や一部セルが結合しております。
 ほかに方法はありませんでしょうか。コードを書いていただくとたすかります。
 
・ツリー全体表示

116 / 3841 ページ ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free