
入庫.xlsに現在、"原紙"というシートがあります。
入庫.xlsには、"原紙"と入庫のあった日のシートがあるようにしたいのです。
今日、入庫があれば、入庫.xlsには
"原紙"と"20"のシートが存在するようにしたいのです。
AccessのVBAにて1文でシートのコピーってできないでしょうか?
Dim oApp As Object
Dim StWk1 As String
Dim SHizk As String
Dim Hizk As Integer
Hizk = DatePart("d", Me![入庫日付])
SHizk = CStr(Hizk)
StWk1 = "c:入庫.xls"
Set Xls = GetObject(StWk1)
Xls.Application.Windows(1).Visible = True
Xls.Application.worksheets("原紙").Copy After:=Xls.Application.worksheets(SHizk)
Xls.Application.worksheets(SHizk).Activate
上記のように作成してみたのですが、実行すると、
Xls.Application.worksheets("原紙").Copy After:=Xls.Application.worksheets(SHizk)
のところで、エラーになります。
実行エラー'9':
インデックスが有効範囲にありません。
のメッセージが表示されます。
教えてください。
No.3ベストアンサー
- 回答日時:
Private Sub CmdCopySheet_Click()
'Dim xlApp As Excel.Application
'Dim xlBook As Excel.Workbook
'Dim xlSheet As Excel.Worksheet
Dim xlApp As Object
Dim xlBook As Object
Dim xlSheet As Object
Dim stFileName As String
Dim stSheetName As String
Dim lngCnt As Long
'ファイル名指定
stFileName = "C:\入庫.xls"
'コピーシート名指定
stSheetName = Format(Date, "dd")
'エクセル展開
'Set xlApp = New Excel.Application
Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Open(stFileName)
'コピー先取得
For Each xlSheet In xlBook.Worksheets
If xlSheet.Name = stSheetName Then
If Len(stSheetName) = 2 Then
stSheetName = stSheetName & " (2)"
Else
stSheetName = Left(stSheetName, 2) & " (" & Val(Mid(stSheetName, 5)) + 1 & ")"
End If
End If
lngCnt = lngCnt + 1
Next
'シートコピー
Set xlSheet = xlBook.Worksheets("原紙")
xlSheet.Copy , xlBook.Worksheets(lngCnt)
'シート名変更
lngCnt = lngCnt + 1
Set xlSheet = xlBook.Worksheets(lngCnt)
xlSheet.Name = stSheetName
'エクセルファイルを閉じる
xlBook.Close (True)
xlApp.Quit
'オブジェクトの開放
Set xlSheet = Nothing
Set xlBook = Nothing
Set xlApp = Nothing
'完了メッセージ
MsgBox "シートをコピーしました"
End Sub
作成時は、参照設定で「Microsoft Excel *.* Object Library」にチェックをつけておくと楽ですよ
作成し終わったら、CreateObjectを使って参照設定を元に戻しておけば、バージョン違いのエクセルにも対応できます
No.2
- 回答日時:
Xls.Application.worksheets("原紙").Copy After:=Xls.Application.worksheets(SHizk)
ですが、After は、コピーしたシートを After で指定したシートの後ろに挿入するということなんですが、実行時にまだ存在しないシートを指しているので、エラーになるようです。
Xls.Application.worksheets(SHizk).Activate
も同様です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
アクセスからエクセルのシートを追加して、名前をつける方法
Excel(エクセル)
-
ACCESSVBA からExcelの他ブックへコピーの方法
Visual Basic(VBA)
-
アクセスVBAで既に開いているエクセルを閉じたい
Yahoo!ショッピング
-
4
ACCESS、VBAでEXCELファイルをコピーはできますか
その他(データベース)
-
5
Access エクセルシート名変更
その他(プログラミング・Web制作)
-
6
Access VBAよりシート名を取得したい
その他(データベース)
-
7
Access-VBAでExcelファイルを作成する。
Excel(エクセル)
-
8
ACCESS VBAでExcelを開き行をコピーしたい
Visual Basic(VBA)
-
9
Access サブフォームでの選択行の取得
その他(データベース)
-
10
Access VBAよりExcelのシート名を取得
その他(データベース)
-
11
AccessVBAで作成したExcelファイルを削除する方法は?
Visual Basic(VBA)
-
12
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
13
ACCESS VBAで作成済のExcelのコピーを作りたい
Visual Basic(VBA)
-
14
サブフォームに対してGoToRecordするには?
その他(Microsoft Office)
-
15
アクセスで数値型のフィールドにNullをいれたい
その他(データベース)
-
16
AccessからExcelにエクスポートする時に常に上書きしたい
Excel(エクセル)
-
17
ACCESS側からEXCELの書式を設定するには?
Visual Basic(VBA)
-
18
VBAをつかってクエリの情報を抽出するには??
Visual Basic(VBA)
-
19
AccessからExcelのシートを削除
Excel(エクセル)
-
20
アクセスvbaでエクセルブックを保存
その他(Microsoft Office)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
エクセルでキーリストからデー...
-
5
Microsoft 365でのデータ
-
6
C言語のバイナリファイルに関す...
-
7
複数ページあるPDFファイル内の...
-
8
ExcelのVBAコードについて教え...
-
9
ACCESS DAO で不要なテーブルの...
-
10
特定のPCだけ動作しないVBAマク...
-
11
Excel・Word リサーチ機能を無...
-
12
配列数式の解除
-
13
UserForm1.Showでエラーになり...
-
14
エクセルのセル値に対応してマ...
-
15
メモ帳(テキストデータ)をExc...
-
16
メッセージボックスのOKボタ...
-
17
Excel マクロ VBA プロシー...
-
18
教えて下さい
-
19
一つのTeratermのマクロで複数...
-
20
マクロで"#N/A"のエラー行を削...
おすすめ情報
公式facebook
公式twitter