0

私は VBA で行う必要があるこの仕事を持っています。IDE を開いてそこからコードを実行すると、すべて期待どおりに動作し、データを txt ファイルから新しい一時ワークブックにロードし、ワークシートにコピーして貼り付け、一時ファイルを閉じますワークブック。

ただし、Ctr+Sft+L などのショートカットを使用して実行すると、一時ワークブックにデータが読み込まれ、アクティブ化され、そこで実行が停止されます。データはワークシートに貼り付けられません。どうすればこれを修正できますか?

コードは次のとおりです。

Sub Load_Text() 
    Dim wsSheet As Worksheet 
    InsertWorkSheet ("Data") 

    Set wsSheet = ThisWorkbook.Sheets("Data") 

    Workbooks.OpenText Filename:="C:\Documents and Settings\w059\Desktop\20121107_Report.txt", _ 
    Origin:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _ 
    ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=True, Comma:=False, _ 
    Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), _ 
    Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1)), TrailingMinusNumbers:=True 
    ActiveWorkbook.Worksheets(1).Cells.Copy wsSheet.Range("A1") 
    ActiveWorkbook.Close True 
End Sub 
Public Sub InsertWorkSheet(name As String) 
    Dim wsSheet As Worksheet 
    On Error Resume Next 
    Set wsSheet = ThisWorkbook.Sheets(name) 

    If wsSheet Is Nothing Then 
        ThisWorkbook.Sheets.Add After:=Sheets(Sheets.Count) 
        ThisWorkbook.Sheets(Sheets.Count).name = name 
    End If 
End Sub 
4

1 に答える 1

0

ActiveWorkbook への参照が間違っていました。これはそれを修正しました:

交換済み

ActiveWorkbook.Worksheets(1).Cells.Copy wsSheet.Range("A1") 
ActiveWorkbook.Close True 

Dim wb As Workbook
Set wb = ActiveWorkbook
wb.Worksheets(1).Cells.Copy wsSheet.Range("A1")
wb.Close True
于 2012-12-18T13:19:56.660 に答える