いつもお世話になっております。
ExcelのVBAで、application.inputboxで他のブックを選択したいのですが、どうも出来ません。下記のコードを実行して、InputBoxで、他のブックのセルを指定したいのですが、どうも現在開いている他のブックをマウスでクリック出来ないのです。
下記のコードは、『選択範囲を、InputBoxで指定した先にコピーしたい』という意図から、まずは、Msgboxに表示してみることにしたものです。
これは、何故なのでしょうか?
ご教示下さい。
'rngOriginalを、rngCopyToにコピーします。
Sub Test()
Dim rngOriginal As Range
Dim rngCopyTo As Range
Set rngOriginal = Selection.Cells
Set rngCopyTo = Application.InputBox("コピー先を選択してください", , , , , , , 8)
With rngOriginal
MsgBox .Parent.Parent.Name & " " & .Parent.Name & "!" & .Address(, , Application.ReferenceStyle)
End With
With rngCopyTo
MsgBox .Parent.Parent.Name & " " & .Parent.Name & "!" & .Address(, , Application.ReferenceStyle)
End With
End Sub
sub UsedRangeをOffsetする()
Dim rng先 As Range
Dim PathMacrobook As String
Dim Name元book As String
Dim 元Book As Workbook
Dim 元Sheet As Worksheet
Set rng先 = Workbooks("BOOKALL.xls").Worksheets(1).Range("A2")
PathMacrobook = ThisWorkbook.Path & "\"
Name元book = Dir(PathMacrobook & "*.xls")
Do While Not Name元book = ""
If Name元book = ThisWorkbook.Name Then
ElseIf Name元book = "BOOKALL.xls" Then
Else
Set 元Book = Workbooks.Open(PathMacrobook & Name元book)
For Each 元Sheet In 元Book.Worksheets
With 元Sheet.UsedRange
.Offset(1).Copy rng先
Set rng先 = rng先.Offset(.Rows.Count - 1, 0)
End With
Next
元Book.Close False
End If
Name元book = Dir()
Loop
End Sub
このコードではフォルダにあるブックのすべてのシートをBOOKALLのシート1に
上書きコピーしてしまう事がわかりました。
やりたい事
オープンするブックのsheet1だけを、.end(xlup)を使って一覧にしたいです。。
どの様にしたらよいでしょうか?
EXCELファイル(DB.XLS)とEXCELファイル(入力.XLS)を用意し、入力.XLSからデータベース.XLSへ更新処理を行いたいのですが削除処理がうまくいきません。
現状はADOにて表示、追加、修正、削除をしようと考えており下記記述(1)で削除処理を書いているのですが「クエリーが複雑すぎます。」エラーが発生しています。
又、別削除処理としてDim MYCMD As ADODB.CommandからMYCMD.CommandText = "DELETE FROM [データベース$] WHERE 日付 = " & Range("D4")でMYCMD.Executeしても行削除ができません。
これはhttp://support.microsoft.com/default.aspx?scid=kb;ja;257819にも記載があるように仕様なのかもしれませんが・・・
ただ、Worksheets("データベース").Rows(2).Deleteのように同一のブック内にデータベースがあれば削除可能でした。
別ファイル(DB.xls)の行削除はできないのでしょうか?特にADOでなくてもかまいませんが、できるだけOS側の設定は手動設定させたくないです。
OS:WindwsXP SP2
ソフト:Microsoft Excel2003
※表示(select)、追加(.AddNew)は下記記述(1)と少し異なりますが可能でした。
''入力.XLSの記述(1)
''**********削除処理2 ADO[Microsoft.Jet.OLEDB.4.0] クエリーが複雑すぎますのエラー
Dim strCn As String
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim test_sql As String
strCn = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & ThisWorkbook.Path & "\DB.xls;" & _
"Extended Properties=Excel 8.0"
Set cn = New ADODB.Connection
cn.Open strCn
Set rs = New ADODB.RecordsetEXCEL
With rs
.CursorLocation = adUseClient
.Open "Select * from [データベース$]", cn, adOpenStatic, adLockOptimistic
Do
test_sql = "日付 = " & Range("D4")
rs.Find test_sql
If rs.EOF = True Then Exit Do
rs.Delete 'ここでエラー
Loop
.Update
.Close
End With
Set rs = Nothing
cn.Close
Set cn = Nothing
''***********
VB6,Excel2003です。
既存のエクセルシートを新規ブックにコピーする
プログラムを作成してみましたが
タスクバーに新規ブックのタスクバーボタンが2つできてしまいます。
どこが原因か教えてください。よろしくお願いします。
Private Sub Command1_Click()
Dim xlsApp As Excel.Application
Dim xlsBookTemp As Excel.Workbook 'コピー元ブック
Dim xlsBookCopy As Excel.Workbook 'コピー先ブック
Dim xlsSheetTemp As Excel.Worksheet 'コピー元シート
Dim xlsSheetCopy As Excel.Worksheet 'コピー先シート
Set xlsApp = CreateObject("Excel.Application")
Set xlsBookTemp = xlsApp.Workbooks.Open("C:\Temp.xls")
Set xlsSheetTemp = xlsBookTemp.Sheets(1)
Set xlsBookCopy = xlsApp.Workbooks.Add
Set xlsSheetCopy = xlsBookCopy.Sheets(1)
xlsApp.Visible = True
'コピー元のSheet1を新規ブックにコピーする
xlsSheetTemp.Copy Before:=xlsSheetCopy
'コピー元のブックは閉じる
xlsBookTemp.Close
'///新規ブックの編集処理///
Set xlsSheetTemp = Nothing
Set xlsBookTemp = Nothing
Set xlsSheetCopy = Nothing
Set xlsBookCopy = Nothing
Set xlsApp = Nothing
End Sub