すいません1つ質問があります。
以前質問させて頂きましたが、ExcelのVlookupでACCESSのクエリを参照してレコードを取得したいです。
ADOでAccessのテーブルから持ってくることは出来ました。
が、繰り返しても最初の数字の9999しかもって来ません・・・。
下記が私の書いたコードとなります。
ExcelシートとACCESSテーブルを画像として添付します。
D2には9999、D3には55555・・・・と持ってくるようにしたいです。
原因と修正法を教えて頂ければ幸いです。
何卒よろしくお願いします。
Option Explicit
Sub test()
Dim db As ADODB.Connection
Dim rs As ADODB.Recordset
Dim strSQL As String
Dim i As Long
Dim Maxrow As Long
Set db = New ADODB.Connection
db.Provider = "Microsoft.ace.oledb.12.0"
db.Open "C:\Users\Kei\Desktop\Test\Test.accdb"
Set rs = New ADODB.Recordset
rs.Open "Ship", db, adOpenStatic
Maxrow = Sheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To Maxrow
strSQL = "select * from Ship where 商品名 =" & Cells(i, 1) & ";"
Cells(i, 4) = rs!出荷数
Next i
rs.Close
db.Close
Set db = Nothing
Set rs = Nothing
End Sub
すいません1つ質問があります。
以前質問させて頂きましたが、ExcelのVlookupでACCESSのクエリを参照してレコードを取得したいです。
ADOでAccessのテーブルから持ってくることは出来ました。
が、繰り返しても最初の数字の9999しかもって来ません・・・。
下記が私の書いたコードとなります。
ExcelシートとACCESSテーブルを画像として添付します。
D2には9999、D3には55555・・・・と持ってくるようにしたいです。
原因と修正法を教えて頂ければ幸いです。
何卒よろしくお願いします。
Option Explicit
Sub test()
Dim db As ADODB.Connection
Dim rs As ADODB.Recordset
Dim strSQL As String
Dim i As Long
Dim Maxrow As Long
Set db = New ADODB.Connection
db.Provider = "Microsoft.ace.oledb.12.0"
db.Open "C:\Users\Kei\Desktop\Test\Test.accdb"
Set rs = New ADODB.Recordset
rs.Open "Ship", db, adOpenStatic
Maxrow = Sheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To Maxrow
strSQL = "select * from Ship where 商品名 =" & Cells(i, 1) & ";"
Cells(i, 4) = rs!出荷数
Next i
rs.Close
db.Close
Set db = Nothing
Set rs = Nothing
End Sub
エクセルで全てのプリンターのプリンター名・ドライバー名・ポート名を取得する コードを実行したいのですが
Sub Sample()
Dim prtLoop As Printer
For Each prtLoop In Application.Printers
With prtLoop
Debug.Print "Device name: " & .DeviceName
Debug.Print "Driver name: " & .DriverName
Debug.Print "Port: " & .Port
End With
Next prtLoop
End Sub
これをそのまま貼り付けて実行しようとすると、
「prtLoop As Printer」が、ユーザー定義型は定義されていません。
になります。
何に参照設定すればいいのかわからないので、
とりあえず
Dim prtLoop As Object
にしたのですが、
今度は
For Each prtLoop In Application.Printers
で
実行時エラー438
オブジェクトは、このプロパティまたはメソッドをサポートしていません。
になります。
どうすればいいか教えてください。
すみません、いつも、いろいろな方に助けて頂いていますが、また、初歩的な質問をさせて頂きます。
Excel2007のVBAでXMLの扱いが良くわかっておりません。
以下のプログラムで複数ItemのASINを出力したいのですが、うまくいきません。
XMLがきちんと取得できているのはWireSharkでキャプチャして確認できております。
VBAで表示出力するのがうまくいきません。ご教授方よろしくお願いします。
selectSingleNodeで一つの場合はうまく取り出せています。複数ノードの場合にSelectNodesの使い方に問題がありますでしょうか?
型の宣言などに誤りがありますでしょうか?
また、基本的なことですが、MSXML2を使おうとしたら、Excel2007で使えませんでした。
XMLDOMは、サポート切れ?で古いので、MSXML2を使うのが良いとWebで見ました。
DLLなどが必要な気がしているのですが、よくわかっていないのでご教授頂きたいです。
すみませんが、よろしくお願いします。
*****VBAプログラム(抜粋)******
Dim xml As Object, xmlItems As Object, objPrice As Object
'XML オブジェクト作成
Set xml = CreateObject("Microsoft.XMLDOM")
xml.async = False
xml.Load URI
Set xmlItems = xml.SelectNodes("ItemLookupResponse/Items/Item")
For Each objPrice In xmlItems
' ASIN
If Not objPrice.SelectSingleNode("ASIN") Is Nothing Then
curWS.Cells(rowIndex, ASINCol) = objPrice.SelectSingleNode("ASIN").text
End If
Next
*****取得したXML(抜粋)******
<ItemSearchResponse >
<Items>
<Item>
<ASIN>111</ASIN>
</Item>
<Item>
<ASIN>222</ASIN>
</Item>
<Item>
<ASIN>333</ASIN>
</Item>
</Items>
</ItemSearchResponse>
エクセルVBAで IE読み込み完了まで、というサンプルは有るのですが
時間来ても、読み込め無い時 中止の処理ですが、
下記で如何でしょうか(実験が出来ないので、お知恵拝借)
さらに、もっと、スマートな方法が有ればご教示ください。
Set IE = CreateObject("internetExplorer.application")
url = yobiurl ' "http://admin.blog.fc2.com/control.php?mode=editor&process=new"
With IE
.Navigate url
.Visible = True
i = 1
Do While .Busy = True
Call Sleep(50) '0.05sec * 400 =20秒
DoEvents
i = i + 1
If i > 399 Then
.Quit
' End With
Set IE = Nothing
Exit Sub
End If
Loop
i = 1
Do While .document.ReadyState <> "complete"
Call Sleep(50)
DoEvents
i = i + 1
If i > 399 Then
.Quit
' End With
Set IE = Nothing
Exit Sub
End If
Loop