------------------------------------------------------------
Private Sub UserForm_Initialize()
Dim lstFsheet As Worksheet 'コピー元シート名格納リスト
Dim lstTsheet As Worksheet 'コピー先シート名格納リスト
Dim txtFline As Integer 'コピー元行数格納項目
Dim txtTline As Integer 'コピー先行数格納項目
'コピー元シート名リスト 設定
frmCopyNaka.lstFsheet.AddItem "販売台帳11月"
frmCopyNaka.lstFsheet.AddItem "販売台帳12月"
'コピー先シート名リスト 設定
frmCopyNaka.lstTsheet.AddItem "2009.11.9"
frmCopyNaka.lstTsheet.AddItem "2009.11.13"
frmCopyNaka.lstTsheet.AddItem "2009.12.3"
End Sub
----------------------------------------------------------
Private Sub cmdCopy_Click()
Dim Fsheet As Worksheet
Dim Tsheet As Worksheet
'
Set Fsheet = Workbooks("販売台帳.xls").Worksheet(lstFsheet)
Set Tsheet = Workbooks("申込書.xls").Worksheet(lstTsheet)
Tsheet.Cells(txtTline, 2) = Fsheet.Cells(txtFline, 3)
------------------------------------------------------------
という感じでうまくいくと思ったのですが、
Set Fsheet = Workbooks("販売台帳.xls").Worksheet(lstFsheet)
の[worksheet(lstFsheet)]で[型が一致しない]のエラーになります。
シート名を変数として扱う事は出来ないのでしょうか?
基礎の勉強が不足しているのに、見よう見まねでやっているから
こんな事になるんでしょうね…
わかりやすい説明をお願いします。
こんにちは。
recordsetの結果をDictionaryにいれたいと思っています。
環境はWindows Vista、vbScriptで書いています。
set dc = createobject("scripting.dictionary")
Set rs = Server.CreateObject("ADODB.Recordset")
rs.open (sql文), con
for i = 0 to rs.recordcount -1
for j = 0 to rs.fields.count - 1
dc.add rs.fields(j).name, rs.fields(j).value
next
next
ちょっとイメージっぽく書きましたが(このままではエラーでます)、要は複数のフィールドを持つ複数のレコードを入れられないかということです。
色々調べたりしてみたのですがわかりません。
できないのかな?と思いました。
もしできるなら書き方をご教授頂けたらと思います。
よろしくお願いします。
Excel2003からAccess2003のDBの値を取得するVBAを作成中なのですが、
ExcelのフォームにてTextBox1に入力した社員番号からネットワーク接続されたサーバーにあるmdbファイルから値を取得する内容で
以下のエラーが表示されます。
「実行時エラー '-2147217904 (80040e10)':
1つ以上の必要なパラメータの値が設定されていません。」
デバッグをすると、「rs1.Open sql1, con」の箇所と指摘されます。
以下にコードを貼り付けますので、間違っている点のご指摘をお願いいたします。
Private Sub CommandButton2_click()
Dim shainID As Long
Dim constr As String '接続文字列の定義
Dim con As ADODB.Connection
Dim rs1 As ADODB.Recordset
If TextBox1.Value = "" Then
MsgBox "社員番号を入力してください", vbOKOnly + vbCritical, "社員番号入力エラー"
TextBox1.SetFocus
Else
shainID = TextBox1.Value
Range("B13").Value = shainID
'Connectionの設定
Set con = CreateObject("ADODB.Connection")
constr = "provider = Microsoft.Jet.OLEDB.4.0;Data Source = \\192.168.1.100\ShainDB\shaindb.mdb"
'DB接続
con.Open constr
'RecordSetの作成
Set rs1 = CreateObject("ADODB.Recordset")
'SQL
sql1 = "select 社員漢字氏名,性別,生年月日,電話番号,住所 from 社員テーブル where 社員番号 = shainID"
If sql1 = "" Then
MsgBox "入力した社員番号の社員はいません。", vbOKOnly + vbCritical, "社員番号入力エラー"
TextBox1.SetFocus
Else
'SQLを実行して対象をRecordSetに入れる
rs1.Open sql1, con
Set rs1 = con.sql1
Range("B14").Value = 社員漢字氏名
Range("B15").Value = 性別
Range("B16").Value = 生年月日
Range("B17").Value = 電話番号
Range("B18").Value = 住所
Unload Me 'フォームを閉じる
End If
End If
End Sub
txtファイルの出力をしたいのですが
調べながらやっていたのですがよくわかりませんでした。
あまり時間が取れない為
コードの記述方法を教えてください。
vbaの処理を行ってできたstrCompSheetNmのSheetがあります。
このSheetのデータを出力したいのです。
またこのSheetの行数は非固定になります。
出力元をどこかで指定してあげないといけないのかと思うのですが
記述方法がわからず
いろいろなサイトを参考にしながらやってみても
内容が空のファイルができあがったりしてました。
出来たら 出力時 同名のファイルがあった場合
上書き又はファイル名を変更できるようにしたいのです。
いろいろ書きなおした上で下記の状態でとまっております。
ご回答のほう宜しくお願い致します。
不慣れでもうしわけないです。
現状
Dim SaveFileName As Variant
Dim wScriptHost As Object, strInitDir As String
Set wScriptHost = CreateObject("WScript.Shell")
ChDir wScriptHost.SpecialFolders("Desktop")
'Dim YeDate As String
'YeDate = Format(Date, "yyyymmdd")
SaveFileName = Application.GetSaveAsFilename(Format_
(Date, "yyyymmdd"), "テキストファイル(*.txt),*.txt,_
CSVファイル(*.csv),*.csv")
If SaveFileName <> False Then
Dim FlNum As Integer
Dim GYO As Long
Dim GYOMAX As Long
FlNum = FreeFile
Open ThisWorkbook.Path & SaveFileName For Output As FlNum
GYO = 1
Do Until GYO > GYOMAX
Print #FlNum,
GYO = GYO + 1
Loop
Close #intFF
Else
MsgBox "キャンセルがクリックされました。", vbInformation
End If
txtファイルの出力をしたいのですが
調べながらやっていたのですがよくわかりませんでした。
あまり時間が取れない為
コードの記述方法を教えてください。
vbaの処理を行ってできたstrCompSheetNmのSheetがあります。
このSheetのデータを出力したいのです。
またこのSheetの行数は非固定になります。
出力元をどこかで指定してあげないといけないのかと思うのですが
記述方法がわからず
いろいろなサイトを参考にしながらやってみても
内容が空のファイルができあがったりしてました。
出来たら 出力時 同名のファイルがあった場合
上書き又はファイル名を変更できるようにしたいのです。
いろいろ書きなおした上で下記の状態でとまっております。
ご回答のほう宜しくお願い致します。
不慣れでもうしわけないです。
現状
Dim SaveFileName As Variant
Dim wScriptHost As Object, strInitDir As String
Set wScriptHost = CreateObject("WScript.Shell")
ChDir wScriptHost.SpecialFolders("Desktop")
'Dim YeDate As String
'YeDate = Format(Date, "yyyymmdd")
SaveFileName = Application.GetSaveAsFilename(Format_
(Date, "yyyymmdd"), "テキストファイル(*.txt),*.txt,_
CSVファイル(*.csv),*.csv")
If SaveFileName <> False Then
Dim FlNum As Integer
Dim GYO As Long
Dim GYOMAX As Long
FlNum = FreeFile
Open ThisWorkbook.Path & SaveFileName For Output As FlNum
GYO = 1
Do Until GYO > GYOMAX
Print #FlNum,
GYO = GYO + 1
Loop
Close #intFF
Else
MsgBox "キャンセルがクリックされました。", vbInformation
End If
こんにちは。
recordsetの結果をDictionaryにいれたいと思っています。
環境はWindows Vista、vbScriptで書いています。
set dc = createobject("scripting.dictionary")
Set rs = Server.CreateObject("ADODB.Recordset")
rs.open (sql文), con
for i = 0 to rs.recordcount -1
for j = 0 to rs.fields.count - 1
dc.add rs.fields(j).name, rs.fields(j).value
next
next
ちょっとイメージっぽく書きましたが(このままではエラーでます)、要は複数のフィールドを持つ複数のレコードを入れられないかということです。
色々調べたりしてみたのですがわかりません。
できないのかな?と思いました。
もしできるなら書き方をご教授頂けたらと思います。
よろしくお願いします。